gpt4 book ai didi

Delphi:上网本上的透明控件变为不透明

转载 作者:行者123 更新时间:2023-12-03 15:17:38 24 4
gpt4 key购买 nike

由于某种原因,表单上的透明控件在某些计算机上变得不透明。我收到有关“Acer Netbook”和“Thinkpad x600”上发生这种情况的报告。该应用程序是使用 Delphi 2007 构建的。

它是这样的: link

虽然它应该看起来像这样: link

窗体上的不透明控件是 TLabels 和 TStaticTexts。

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

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

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

最佳答案

TLabel 和表单之间是否有 TImage?如果是这种情况,请将表单的颜色设置为黑色。当您将 TLabel 设置为透明时,它将在其父控件上绘制它,并且 TImage 不能有子控件。实际上,它正在将表单的颜色渲染到标签上,因为表单是父表单。

另外两种可能的解决方法包括将图像直接绘制到表单上(不使用 TLabel),但我不知道这是否可行。另一种方法是创建您自己的图像控件,该控件源自 TWinControl(而不是 TGraphicControl)并且可以包含子控件。不过,对于这些解决方案,YMMV 很满意。

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

关于Delphi:上网本上的透明控件变为不透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com