gpt4 book ai didi

delphi - 何时使用 TPanel FullRepaint?

转载 作者:行者123 更新时间:2023-12-03 15:01:20 25 4
gpt4 key购买 nike

我注意到,当我将 TPanel.FullRepaint 设置为 False 时,调整大小闪烁变得更好。由于该属性存在并且默认情况下为 True,因此一定有某种原因。

如何决定是否设置?

帮助仅指出:

FullRepaint controls how the panel responds when it is resized. When FullRepaint is true, the entire panel, including the beveled border repaints when the size changes. When FullRepaint is false, only the area inside the beveled border repaints.

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

该文字说明了它的作用,但没有说明原因......

最佳答案

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

  1. 将面板放置在表单上,​​将 anchor 设置到各个方向
  2. 将 PaintCaption 设置为 false 或使用空标题
  3. 在表单上放置另一个面板,以便在调整表单大小时形式,第一个面板的部分内容将被第二个面板覆盖。

运行程序并调整窗体大小,有时第一个面板的边框不会刷新。
发生这种情况是因为在 WMWindowPosChanged 中,在 (FullRepaint 或 (ShowCaption and (Caption <> ''))) 的情况下,将调用 invalidate,否则仅包含右侧和/或底部的矩形的 InvalidateRect(Handle, Rect, True)边界无效。 (感谢 Sertac Akyuz 的修正)

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

面板很少会被使用,上部没有Fullrepaint

关于delphi - 何时使用 TPanel FullRepaint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com