何时使用TPanel FullRepaint?

时间:2013-02-10 00:54:16

标签: delphi resize tpanel

当我将resize flicker设置为TPanel.FullRepaint时,我注意到False变得更好。由于该属性存在且默认为True,因此必须有一些原因。

如何决定是否应该设置?

帮助只是声明:

  

FullRepaint控制面板调整大小时的响应方式。当FullRepaint为true时,整个面板(包括斜面边框)会在尺寸更改时重新绘制。当FullRepaint为false时,只有斜面边框内的区域重新绘制。

http://docwiki.embarcadero.com/Libraries/XE3/en/Vcl.ExtCtrls.TPanel.FullRepaint

该文字说明了它的作用,但不是为什么......

2 个答案:

答案 0 :(得分:4)

可以显示缺少Fullrepaint的效果,您必须决定是否需要它。

  1. 在表单上放置一个面板,将锚点设置为所有方向
  2. 将PaintCaption设置为false或使用空标题
  3. 在表单上放置另一个面板,以便在调整大小时使用 表格,第一个面板的部分将由第二个面板覆盖。
  4. 运行程序并调整表单大小,有时第一个面板的边框不会刷新 发生这种情况是因为在WMWindowPosChanged中(FullRepaint或(ShowCaption和(Caption<>'))))将调用invalidate,否则只有InvalidateRect(Handle,Rect,True)才会包含权利和/或底部边框无效。 (感谢Sertac Akyuz的更正)

    正如您所提到的,避免无效会减少闪烁,并且在许多情况下不会给出完全无效的需要,因此用户可以自行决定如何继续。

    面板很少使用,鞋面没有Fullrepaint

答案 1 :(得分:0)

在以前版本的Windows中(确切地说不确定哪个版本){}需要FullRepaint来防止在调整窗体大小时对面板边框进行图形制作。 据我所知,至少从Windows XP开始,这不是问题。