gpt4 book ai didi

delphi - 在双缓冲 TTreeView 上自定义绘图时闪烁

转载 作者:行者123 更新时间:2023-12-02 06:10:46 25 4
gpt4 key购买 nike

当这样监听TTreeView事件的AdvancedCustomDraw事件时:

if Stage = cdPrePaint then begin
// modify some Sender.Canvas properties and let it draw itself
end else if Stage = cdPostPaint then begin
// draw 'something extra' using a separate TControlCanvas
TControlCanvas.TextOut(SomeRect, 'Hello');
end;

...似乎当我启用 DoubleBuffered 时,控件决定不将“额外的内容”复制到屏幕外缓冲区。这意味着只要我不打扰有问题的 window ,一切都很好。当我这样做时,“额外的东西”仅在窗口的随机部分可见。

我在这里缺少什么?

最佳答案

由于您的评论让我全权建议替代解决方案,因此我会这样做:

  1. 停止使用DoubleBuffered。它导致许多控件出现许多视觉上的奇怪现象。我个人像躲避瘟疫一样躲避它。
  2. 通过向控件添加 WS_EX_COMPOSITED 扩展窗口样式来解决闪烁问题。这种窗口样式可能会有点拖累性能,我建议您仅在调整大小循环期间(即您需要它的时候)添加它。我在此处的回答中描述了如何做到这一点:TLabel and TGroupbox Captions Flicker on Resize .

关于delphi - 在双缓冲 TTreeView 上自定义绘图时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14651099/

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