Delphi:透明控件在上网本上变得不透明

Vla*_*eev 4 delphi vcl

出于某种原因,表单上的透明控件在某些计算机上变得不透明.我在"Acer Netbook"和"Thinkpad x600"上得到了报道.该应用程序是使用Delphi 2007构建的.

这就是它的样子: 链接

虽然看起来像这样: 链接

表单上的不透明控件是TLabels和TStaticTexts.

(我使用TStaticText控件来定义可点击区域,因为鼠标消息到无处理控件(如标签)会转到WM_NCHITTEST处理程序.底部的"按钮"是黑色的,因为我不小心将其颜色设置为clNone,尽管它不应该完全可见.)

为什么会发生这种情况以及如何防止这种情况(除了将文本渲染到背景图像之外的变通方法)?

编辑:我设法在我的笔记本电脑上重现问题,该笔记本电脑运行的是32位色的Windows XP,并使用经过认证的ATI驱动程序.

Jim*_*eth 9

TLabel和表单之间是否存在TImage?如果是这种情况,则将表单的颜色设置为黑色.当您将TLabel设置为透明时,它会在其父项上绘制它,并且TImage不能具有子控件.实际上,它将表单的颜色呈现在标签上,因为表单是父表单.

另外两种可能的解决方法包括将图像直接涂在表格上(不使用TLabel),但我不知道这是否有效.另一种方法是创建自己的图像控件,它来自TWinControl(而不是TGraphicControl)并且可以包含子控件.YMMV就这些解决方案而言.

我怀疑它在某些机器上不起作用的原因是底层的Windows API库是不同的.