M manferty Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-08 #1 在调用imagel.Canvas.CopyRect()方法,替换imagel的部分图像时,imagel总是闪烁。如何避免?请高手指教
M manferty Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-08 #2 在调用imagel.Canvas.CopyRect()方法,替换imagel的部分图像时,imagel总是闪烁。如何避免?请高手指教
S someset Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-08 #4 image主要是用来保存内存图的,最好少用它来直接写屏做图 或者用不可见的bitmap来画,画完再COPY到屏幕
M manferty Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-08 #5 谢谢someset和Woooo!!但是用paintbox控件或form.canvas存在刷新问题,当一个新窗口在paintbox控件上时,paintbox必须重新刷新才能显示,这样活非常慢。
S someset Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-08 #6 这是必然的 用image本身是个内存bitmap 它用的canvas不是直接对屏的,所以在它上面操作会主动的更新显示 就造成了闪烁问题 但也唯有它可以保存住图形
C cifanl Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-08 #7 设BoubleBuffer,情况会好一点 不过还是用paintbox
W Woooo Unregistered / Unconfirmed GUEST, unregistred user! 2005-04-08 #8 正常情况下,可以在内存中建立一个BKBmp:Tbitmap; 所有操作都对BKBmp进行 然后paintbox1.Canvas.Draw(0,0,BKBmp);绘制到窗口上。 关于自动刷新的问题 可以在paintbox1的OnPaint事件中同样添加paintbox1.Canvas.Draw(0,0,BKBmp); 其实用Image因为耗费资源,实际更慢
正常情况下,可以在内存中建立一个BKBmp:Tbitmap; 所有操作都对BKBmp进行 然后paintbox1.Canvas.Draw(0,0,BKBmp);绘制到窗口上。 关于自动刷新的问题 可以在paintbox1的OnPaint事件中同样添加paintbox1.Canvas.Draw(0,0,BKBmp); 其实用Image因为耗费资源,实际更慢