出于某种原因,表单上的透明控件在某些计算机上变得不透明.我在“Acer Netbook”和“Thinkpad x600”上得到了报道.该应用程序是使用Delphi 2007构建的. 这就是它的样子: link 虽然看起来像这
这就是它的样子:
link
虽然看起来像这样:
link
表单上的不透明控件是TLabels和TStaticTexts.
(我使用TStaticText控件来定义可点击区域,因为鼠标消息无法处理控件(如标签)转到WM_NCHITTEST处理程序.底部的“按钮”是黑色的,因为我不小心将其颜色设置为clNone,尽管它不应该完全可见.)
为什么会发生这种情况以及如何防止这种情况(除了将文本渲染到背景图像之外的变通方法)?
编辑:我设法在我的笔记本电脑上重现问题,该笔记本电脑运行32位色的Windows XP,并使用经过认证的ATI驱动程序.
TLabel和表单之间是否存在TImage?如果是这种情况,则将表单的颜色设置为黑色.当您将TLabel设置为透明时,它会在其父项上绘制它,并且TImage不能具有子控件.实际上,它将表单的颜色呈现在标签上,因为表单是父表单.另外两种可能的解决方法包括将图像直接涂在表格上(不使用TLabel),但我不知道这是否有效.另一种方法是创建自己的图像控件,它来自TWinControl(而不是TGraphicControl)并且可以包含子控件. YMMV就这些解决方案而言.
我怀疑它在某些机器上不起作用的原因是底层的Windows API库是不同的.