use*_*616 5 delphi flicker delphi-7
我有一个标签,指示文件大小
FormatFloat('##.## KB',BytesIn/OneKB);
Run Code Online (Sandbox Code Playgroud)
当文件都低于2MB时,一切正常.现在我有时使用2GB及以上的文件.
FormatFloat('##.##### MB',BytesIn/OneMB);
Run Code Online (Sandbox Code Playgroud)
标题正在每1 KB更新一次,闪烁非常激烈.
有什么方法可以阻止或最小化它?
Dav*_*nan 10
德尔福TLabel确实可以成为一个怪异的野兽.很多人会推荐双缓冲,但我不喜欢这样.它带来了其他问题.特别是,如果您使用主题,则双缓冲可能会干扰主题渲染.
我处理标签闪烁的技巧是使用a TStaticText而不是a TLabel.这是一个窗口控件,一个围绕Windows STATIC控件的包装器,根据我的经验,它总是不会在可能的情况下闪烁TLabel.
正如其他人所提到的,限制更新率是一个合理的想法,无论闪烁如何都是明智的.没有必要花费资源来更新UI,这比人眼可以吸收的更快.对于类似下载进度的东西,在我的视图中你不应该需要超过5Hz.这可能是您的问题的根本原因,如果限制更新率解决了问题,那么您可以坚持下去TLabel.
我的答案有一些更普遍的反闪烁提示:TLabel和TGroupbox Captions Flicker on Resize.
| 归档时间: |
|
| 查看次数: |
3715 次 |
| 最近记录: |