如何让控件不闪烁 ( 积分: 100 )

  • 主题发起人 主题发起人 EdwardZhou
  • 开始时间 开始时间
E

EdwardZhou

Unregistered / Unconfirmed
GUEST, unregistred user!
写了一个控件继承自TGraphicControl,希望:
1,有自绘的背景
2,用户可以在上面画线
所有的绘制代码都写在override的Paint中
可是发现用户单击时总是出现闪烁,怎么解决这个问题?
或者是我override的Paint中绘制方法不当?
 
写了一个控件继承自TGraphicControl,希望:
1,有自绘的背景
2,用户可以在上面画线
所有的绘制代码都写在override的Paint中
可是发现用户单击时总是出现闪烁,怎么解决这个问题?
或者是我override的Paint中绘制方法不当?
 
parent的DoubleBuffered设为true
 
1. controlstyle := controlstyle + [csOpaque];
2. procedure WMEraseBkgnd(var Message: TMessage); WM_ERASEBKGND;
begin
message.result := 1;
end;
 
看你画了多少东西,如果可以不EraseBackgound就不重画背景。
或者你在另一个Canvas里面画,在Paint中用Canvas.Copy()将其拷贝过来,速度会快些
 
参考一下这个控件的源码
http://www.2ccc.com/article.asp?articleid=2065
 
接受答案了.
 

Similar threads

D
回复
0
查看
926
DelphiTeacher的专栏
D
D
回复
0
查看
718
DelphiTeacher的专栏
D
D
回复
0
查看
679
DelphiTeacher的专栏
D
后退
顶部