窗体上面用Paint确实会很闪,原因是当WM_Paint消息发给窗口时,窗口会调用默认的Paint方法,先画了窗口的底色,然后才是你自己的Paint事件。所以解决的方法,只要自己直接处理WM_PAINT消息就行了。
对于Form可以用message方法
就是在Form的类声明里加上这样的方法:
procedure WMPaint(var msg: TWMPaint); message WM_PAINT;
写这个方法就行了
以上方法只能适用于Form和自己写的控件相应WM_PAINT消息
对于一般的有Handle的窗口,你可以把窗口的WndProc自己改写