伊布SKY

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2009年7月6日

摘要: 有时,在有大量图片或者复杂的界面下,会出现界面闪烁。这是由于windows默认在绘制界面前会用背景色清空,然后重绘。 因为默认背景色一般是白色的,当重绘速度慢时,看起来界面就在闪烁了。 那有没有在不提高界面绘制速度的情况下,防止闪烁呢,常用的办法就是启用双缓冲机制。 双缓冲绘制,就是在内存预先绘制好图形,再拷贝到界面上。中途不再清白背景。 delphi的wincontrol组件提供了双缓冲机制,所以从该组件继承的比如窗体,各类windows控件都有双缓冲绘制功能。 但默认情况下双缓冲绘制是关闭的,在手工设置 DoubleBuffered 属性为true后双缓冲绘制机制开启。无需添加其他代码。 阅读全文
posted @ 2009-07-06 22:55 伊布 阅读(959) 评论(0) 推荐(0) 编辑

摘要: 很多朋友在做绘图程序的时候,往往出现屏幕不停刷新产生闪烁的问题,这里就告诉大家一个解决办法,缓冲绘图。如果有人是用取反画图解决这个问题,那么在画直线的时候容易出现斑点,效果不是很好。如果是图片很大,那么缓冲画图是解决的好办法。 在网上搜索一下内存绘图,或者缓冲绘图,会有很多技术文章,不过都是以vc或者java为主,很少有pascal的代码例子。不过原理都是一样的,大家可以参考他们的文章。我会在最后放上转载的vc缓冲画图的文章。:)感谢原作者。 Delphi中函数调用比较方便。 OldBmp, BufBmp是TbitMap //画图方法: procedure TChart.Draw(aCanva 阅读全文
posted @ 2009-07-06 21:14 伊布 阅读(1757) 评论(0) 推荐(0) 编辑