停止标签标题闪烁

时间:2013-07-10 19:02:28

标签: delphi delphi-7 flicker

我有一个标签,用

表示文件大小
FormatFloat('##.## KB',BytesIn/OneKB);

当文件都低于2MB时,一切正常。现在我有时使用2GB及以上的文件。

FormatFloat('##.##### MB',BytesIn/OneMB);

标题正在每1 KB更新一次,闪烁非常激烈。

有什么方法可以阻止或最小化它?

1 个答案:

答案 0 :(得分:10)

Delphi TLabel确实可以成为一只怪物。很多人会推荐双缓冲,但我不喜欢这样。它带来了其他问题。特别是,如果您使用主题,则双缓冲可能会干扰主题渲染。

我处理标签闪烁的技巧是使用TStaticText而不是TLabel。这是一个窗口控件,是围绕Windows STATIC控件的包装器,根据我的经验,它总是不会在TLabel的情况下闪烁。

正如其他人所提到的,限制更新率是一个合理的想法,无论闪烁如何都是明智的。没有必要花费资源来更新UI,这比人眼可以吸收的更快。对于类似下载进度的东西,在我的视图中你不应该需要超过5Hz。这可能是您的问题的根本原因,如果限制更新率解决了问题,那么您可以坚持使用TLabel

我的回答有一些更常见的反闪烁提示:TLabel and TGroupbox Captions Flicker on Resize