当前位置:编程学习 > C#/ASP.NET >>

C#编写画图板问题

画图区域是一个Panel

g_double是双缓冲的Graphis
g_paint是指向Panel的Graphis
g_save是保存图的Grapics

为了不闪烁,每次MOUSEMOVE的时候,先画在g_double中然后显示,然后清除g_double内容
但是问题是,我如何在以前画的内容基础上画?

MOUSEMOVE的时候每次清除double和再显示g_save就等于闪烁了



请大家指点

谢谢 --------------------编程问答-------------------- up --------------------编程问答-------------------- up --------------------编程问答-------------------- www.codeproject.com有画板的例程。

.Net想要不闪烁,简直是痴人说梦,呵呵~~(尤其是液晶显示器)
和刷新率无关~~ --------------------编程问答-------------------- C#中最强的绘图工具程序
DrawTools向你展示如何在Windows Form程序中通过鼠标拖动绘制各种图形对象,它实现的固定图形有:矩形框、椭圆、线条和铅笔。并且,你可以通过鼠标选择、移动、删除图形,还可以改变图形大小等各种操作。另外,程序支持你把绘制的图形保存成文件,可以直接把一个文件从资源管理器中拖到程序界面上打开。 --------------------编程问答-------------------- 帮顶一下 --------------------编程问答-------------------- www.codeproject.com有画板的例程。 

.Net想要不闪烁,简直是痴人说梦,呵呵~~(尤其是液晶显示器) 
和刷新率无关~~
--------------------------------
什么道理?.Net写的程序一定会闪烁??? --------------------编程问答-------------------- 把以前画 的用数据结构记住!
每次重新画时都把 记住 的重画!  --------------------编程问答-------------------- 谢谢大家

我用保存数据结构的方法试试看 --------------------编程问答-------------------- 问题是,比如我画一条直线,为了在MOUSEMOVE的时候显示画线的轨迹,已经每次MOVE都双缓冲了,那么这时候背景又是
以前画过的东西的话,那么加上画线的双缓冲,背景就闪了。。


保存数据结构难道不一样吗? --------------------编程问答-------------------- 把装Panel 的窗体(或则用户控件)的DoubleBuffered 属性设置为true 试试 --------------------编程问答-------------------- 设置之后最后别使用双缓冲,直接画 看看! --------------------编程问答-------------------- 恕我愚昧

貌似没有DoubleBuffered这个属性选项。。。 --------------------编程问答-------------------- 恕我愚昧

貌似没有DoubleBuffered这个属性选项。。。 --------------------编程问答-------------------- .NET Framework 类库  
Control.DoubleBuffered 属性  

 
注意:此属性在 .NET Framework 2.0 版中是新增的。 

获取或设置一个值,该值指示此控件是否应使用辅助缓冲区重绘其图面,以减少或避免闪烁。 

命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)
--------------------编程问答--------------------
语法
C# 
protected virtual bool DoubleBuffered { get; set; }
 
属性值
如果应使用双缓冲绘制控件的图面,则为 true;否则为 false。 


备注
缓冲图形可以减少或消除由于不断重绘所显示图面的某些部分而导致的闪烁。缓冲图形要求将更新后的图形数据首先写入缓冲区。图形缓冲区中的数据随后快速写入所显示的图面内存。这种相对快速地切换所显示图形内存的方式通常可以减少相对较慢的切换方式导致的闪烁。
--------------------编程问答-------------------- 使用
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |
                    ControlStyles.ResizeRedraw |
                    ControlStyles.AllPaintingInWmPaint, true);
看看,在我这里没有问题. --------------------编程问答-------------------- 可以创建一个用户控件(右击项目名-》添加-》用户控件),将DoubleBuffer属性设置为True,然后在这个控件中画图
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,