当我将resize flicker
设置为TPanel.FullRepaint
时,我注意到False
变得更好。由于该属性存在且默认为True
,因此必须有一些原因。
如何决定是否应该设置?
帮助只是声明:
FullRepaint控制面板调整大小时的响应方式。当FullRepaint为true时,整个面板(包括斜面边框)会在尺寸更改时重新绘制。当FullRepaint为false时,只有斜面边框内的区域重新绘制。
http://docwiki.embarcadero.com/Libraries/XE3/en/Vcl.ExtCtrls.TPanel.FullRepaint
该文字说明了它的作用,但不是为什么......
答案 0 :(得分:4)
可以显示缺少Fullrepaint的效果,您必须决定是否需要它。
运行程序并调整表单大小,有时第一个面板的边框不会刷新 发生这种情况是因为在WMWindowPosChanged中(FullRepaint或(ShowCaption和(Caption<>'))))将调用invalidate,否则只有InvalidateRect(Handle,Rect,True)才会包含权利和/或底部边框无效。 (感谢Sertac Akyuz的更正)
正如您所提到的,避免无效会减少闪烁,并且在许多情况下不会给出完全无效的需要,因此用户可以自行决定如何继续。
面板很少使用,鞋面没有Fullrepaint
答案 1 :(得分:0)
在以前版本的Windows中(确切地说不确定哪个版本){}需要FullRepaint
来防止在调整窗体大小时对面板边框进行图形制作。
据我所知,至少从Windows XP开始,这不是问题。