我正在使用Delphi XE3。
当我创建一个新的VCL项目并在其上放置一个TToolbar时,一切正常-除了激活Form1.DoubleBuffered之外。
从那时起,工具栏的图形被破坏了-在设计时,它是黑色的,透明的,或者将部分IDE(状态栏,工具栏等)复制到其中。当我单击它,并更改为源代码(F12)并返回时,它会在这些选项之间切换。
在运行时,它始终为黑色。

使用DrawingStyle=dsGradient,一切都会按预期进行。切换回dsNormal会再次破坏它。

停用Form1.DoubleBuffered可以修复它。

任何提示如何解决该问题?

最佳答案

我认为解决方案是将TForm.DoubleBuffered设置为False。使用值True会导致各种其他问题。在XP主题之前,此属性运行得相当不错,但是在我看来,使用TForm.DoubleBuffered自从它们出现后就不可行。

除了您遇到的问题外,使用Windows Basic主题时,我还遇到了许多绘画缺陷。我知道这还不是主流,但是我碰巧看到很多远程访问。还有更多。当您双缓冲窗体时,将停止主题动画的工作。例如,默认按钮跳动以指示它是默认按钮。

如果在没有双重缓冲表格的情况下调整大小闪烁,请使用ideas from my answer to another question。从评论看来,您想消除的闪烁是在油漆盒中。我显然不知道细节,但是我的经验和直觉告诉您,您应该能够轻松应对本地的闪烁。肯定不需要全局形式的双缓冲。

10-06 09:11