TStatusBar 控件中的模糊文本

Blurred text in the TStatusBar control

很长一段时间以来,我都遇到了 TStatusBar VCL 控件的一个非常烦人的问题,它是 Win32 status bar 控件的一个薄包装。

由于这在我看来是一个非常普遍且令人沮丧的问题,我很惊讶 Google(和 Whosebug)似乎对此知之甚少。

问题是状态栏文字一段时间没变就变得很模糊;我仍然不知道确切的条件。但是我每天都看到这个:

如果其中一个面板的文本已更新,则新文本会正确呈现(请参阅最后一个面板):

这是只有当我在 运行 Delphi 进程附近时才会发生的事情,还是确实是一个已知问题?更重要的是,是否有已知的治疗方法? (而且,从学术上讲,为什么会发生这种情况?如果它与最初为无主题 Win9x 设计的代码透明绘制抗锯齿文本有关,我不会感到惊讶。)

我试过启用双缓冲,但我不确定这是否能完全解决问题。 (我在非双缓冲列表视图控件中看到了更糟糕的行为,通过使它们成为双缓冲来解决。)

一周前,我将我的应用程序中的所有状态栏都进行了双缓冲,从那以后我再也没有在其中的任何一个中看到过任何模糊的文本。以前,我每天都会看到严重模糊的文字。因此,看起来这个问题——不管是什么原因引起的——可以通过使状态栏双缓冲来解决。