我有一个标签,用
指示文件大小FormatFloat('##.## KB',BytesIn/OneKB);
当文件全部小于 2MB 时,一切正常。现在我有时会使用 2GB 及以上的文件。
FormatFloat('##.##### MB',BytesIn/OneMB);
标题大约每 1 KB 更新一次,并且闪烁很剧烈。
有什么方法可以阻止或最小化它吗?
最佳答案
Delphi TLabel
确实是一个闪烁的野兽。很多人会推荐双缓冲,但我不喜欢那样。它带来了其他问题。特别是,如果您使用主题,那么双缓冲可能会干扰主题渲染。
我处理标签闪烁的技巧是使用 TStaticText
而不是 TLabel
。这是一个窗口控件,是 Windows STATIC
控件的包装器,根据我的经验,它在 TLabel
会出现的情况下总是不会闪烁。
正如其他人提到的,限制更新率是一个好主意,并且无论闪烁如何都是明智的。无需花费比人眼吸收速度更快的资源来更新 UI。在我看来,对于下载进度之类的内容,您实际上不需要超过 5Hz。这很可能是问题的根本原因,如果限制更新速率可以解决问题,那么您可以坚持使用 TLabel
。
我在这里的回答有一些更通用的防闪烁技巧:TLabel and TGroupbox Captions Flicker on Resize .
关于delphi - 停止标签标题闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578863/