社区
C#
帖子详情
GDI+中重绘时如何解决闪烁问题
chusky
2005-04-29 11:34:13
用GDI+画图,当拖动时,往往通过重绘背景色,可这很容易产生闪烁现象。
我只好尽量重绘很小的一部分,但是这样每次都去记住背景色是很麻烦的,特别是图形重叠时,
真不知道如何解决呢 ?
也许是笨,可马上要做东西交作业了。
麻烦各位能提供一些这方面的方法和例子,资料之类的。
感激不尽!!!
...全文
626
4
打赏
收藏
GDI+中重绘时如何解决闪烁问题
用GDI+画图,当拖动时,往往通过重绘背景色,可这很容易产生闪烁现象。 我只好尽量重绘很小的一部分,但是这样每次都去记住背景色是很麻烦的,特别是图形重叠时, 真不知道如何解决呢 ? 也许是笨,可马上要做东西交作业了。 麻烦各位能提供一些这方面的方法和例子,资料之类的。 感激不尽!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
saucer
2005-04-30
打赏
举报
回复
use double buffering, see
Flicker free drawing using GDI+ and C#
http://www.codeproject.com/cs/media/flickerFreeDrawing.asp
bulate
2005-04-30
打赏
举报
回复
如果你在Form中绘图的话,不论是不是采用的双缓存,都会看到图片在更新的时候都会不断地闪烁,解决方法就是在这个窗体的构造函数中增加以下三行代码:
请在构造函数里面底下加上如下几行:
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
参数说明:
UserPaint
如果为 true,控件将自行绘制,而不是通过操作系统来绘制。此样式仅适用于派生自 Control 的类。
AllPaintingInWmPaint
如果为 true,控件将忽略 WM_ERASEBKGND 窗口消息以减少闪烁。仅当 UserPaint 位设置为 true 时,才应当应用该样式。
DoubleBuffer
如果为 true,则绘制在缓冲区中进行,完成后将结果输出到屏幕上。双重缓冲区可防止由控件重绘引起的闪烁。要完全启用双重缓冲,还必须将 UserPaint 和 AllPaintingInWmPaint 样式位设置为 true。
参考资料:
如何解决CSharp中动画闪烁问题?
http://search.csdn.net/Expert/topic/1488/1488888.xml
C#中双缓存绘图的实现方法。
http://blog.joycode.com/ghj/archive/2004/01/03/10543.aspx
以上你不是在窗体上绘图,需要你自己写一个控件,在这个控件的构造函数上增加上上述三行代码。
我不懂电脑
2005-04-30
打赏
举报
回复
使用双缓冲的方法。
[C#]
public void EnableDoubleBuffering()
{
// Set the value of the double-buffering style bits to true.
this.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
this.UpdateStyles();
}
Supernpc
2005-04-30
打赏
举报
回复
楼上的...有木有中文的...
GDI双缓冲
解决
重
绘
闪屏(非MFC)
用GDI
绘
制四叶草,每秒
中
换一种随机颜色。
重
绘
时
候利用后台缓冲技术
解决
图像闪屏现象。纯WIN32API,没有利用MFC。
GDI+“双缓冲”
绘
图,避免
闪烁
源码
资源介绍:。源码结合GDI+模块,在画板上画出和定位文本。资源作者:。@易语言自学网。资源界面:。资源下载:。
VC6-GDI+.rar_GDI 双缓冲_MFC_MFC 读jpg_mfc 滚动条_璇诲彇 鍐呭瓨
这段
时
间在研究GDI+双缓冲的方法,在网上找了很多
时
间都没有找到合适的示例,特别是针对VC6的。后来通过对网上资料的分析,和对SDK,MFC的学习,实现了VC6下GDI+双缓冲的效果,把它写出来与大家分享,希望可以找到更好地实现方法。 想必大家对双缓冲的原理有了一定的了解,以前我也做过GDI双缓冲的项目,网上的示例也很多,后来做GDI+的
时
候有些盲目,其它原理知道了,就该学习GDI+的
绘
制方法了。 GDI+的一个优点就是可以直接使用jpg图像,在这个示例
中
,我没有把图像文件放在资源
中
,而是动态读取,一是由于项目需求,图像数目是未知的;二是由于动态读文件效率低下,使用双缓冲更能体现出优势。 在实现过程
中
,犯了一个错误,把读图像的方法放在了OnDraw之
中
,后来发现拖动滚动条
闪烁
的很严
重
,原因在于ScrollBar拖动
时
会产生消息激活OnDraw,这样的话,每拖动滚动条就读一次文件,
重
绘
一次,效率当然低下了! 我的实现方式是:更换图像后调用UpdateAllViews,内存DC的
绘
制都放在OnUpdate
中
操作,在内存
绘
制好后再在屏幕
中
贴图,如果大家有更好的方法,请写出来分享。
用GDI自
绘
闹钟 双缓冲+多线程
表盘界面全部用GDI画图函数完成。采用了双缓冲技术,减小了表盘
重
绘
时
的
闪烁
现象。报
时
功能采用了多线程技术。
自
绘
按钮PNG
闪烁
问题
http://blog.csdn.net/greless/article/details/74595755
C#
110,580
社区成员
642,559
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章