S snakeqi Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-22 #1 现在有个程序,需要在窗口上画个钟,每隔半秒重绘一次,可闪得厉害,怎么解决?
卷 卷起千堆雪tyn Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-22 #2 处理 WM_ERASEBKGND 消息 private { Private declarations } procedure WMEraseBkGnd(var Msg :TWMEraseBkGnd);message WM_ERASEBKGND; procedure TForm1.WMEraseBkGnd(var Msg :TWMEraseBkGnd); begin inherited; Msg.Result :=LRESULT(False); end;
处理 WM_ERASEBKGND 消息 private { Private declarations } procedure WMEraseBkGnd(var Msg :TWMEraseBkGnd);message WM_ERASEBKGND; procedure TForm1.WMEraseBkGnd(var Msg :TWMEraseBkGnd); begin inherited; Msg.Result :=LRESULT(False); end;
Z zhangkan Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-22 #5 用 form1.DoubleBuffered:=True; 试试 加在Form1.Create中.
W wlmmlw Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-23 #8 老雪没有分?! 闪烁一般是由于控件在Paint时的时候会清空一次背景! 如果控件不是承之Graphi时,窗口的重画将不再对控件的范围内起作用!! 如果是Graphi子类,象zhankan所提也是一种方法,如果用两个TBitmap 模拟又缓冲可有更佳的效果! 一般不要使用Canvas的Draw,而使用Api, 尤其是TImageList的Draw,速度上两者相差很远!!!
老雪没有分?! 闪烁一般是由于控件在Paint时的时候会清空一次背景! 如果控件不是承之Graphi时,窗口的重画将不再对控件的范围内起作用!! 如果是Graphi子类,象zhankan所提也是一种方法,如果用两个TBitmap 模拟又缓冲可有更佳的效果! 一般不要使用Canvas的Draw,而使用Api, 尤其是TImageList的Draw,速度上两者相差很远!!!
T taozhiyu Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-23 #9 有个朋友说用Application.ProcessMessages 不知道对不对哦!