执行imagel.Canvas.CopyRect()总是闪烁 ( 积分: 100 )

  • 主题发起人 主题发起人 manferty
  • 开始时间 开始时间
M

manferty

Unregistered / Unconfirmed
GUEST, unregistred user!
在调用imagel.Canvas.CopyRect()方法,替换imagel的部分图像时,imagel总是闪烁。如何避免?请高手指教
 
在调用imagel.Canvas.CopyRect()方法,替换imagel的部分图像时,imagel总是闪烁。如何避免?请高手指教
 
应该不会吧
或者你用Paintbox控件,平常用不闪
 
image主要是用来保存内存图的,最好少用它来直接写屏做图
或者用不可见的bitmap来画,画完再COPY到屏幕
 
谢谢someset和Woooo!!但是用paintbox控件或form.canvas存在刷新问题,当一个新窗口在paintbox控件上时,paintbox必须重新刷新才能显示,这样活非常慢。
 
这是必然的
用image本身是个内存bitmap
它用的canvas不是直接对屏的,所以在它上面操作会主动的更新显示
就造成了闪烁问题
但也唯有它可以保存住图形
 
设BoubleBuffer,情况会好一点
不过还是用paintbox
 
正常情况下,可以在内存中建立一个BKBmp:Tbitmap;
所有操作都对BKBmp进行
然后paintbox1.Canvas.Draw(0,0,BKBmp);绘制到窗口上。

关于自动刷新的问题
可以在paintbox1的OnPaint事件中同样添加paintbox1.Canvas.Draw(0,0,BKBmp);

其实用Image因为耗费资源,实际更慢
 
后退
顶部