【发布时间】:2010-06-07 16:36:18
【问题描述】:
我用来创建一个完全透明的表格,但 png 和 32 位图像不会融合到表格中,并且图像无法正确显示其透明度。我明白了here 的概念,但我不能把按钮放在上面。除了图像背景之外,所有的下巴都是不可见的。顺便说一下我的编译器是delphi7和D2009
【问题讨论】:
-
如果它要完全透明,那么你也可以隐藏它。
标签: delphi forms alphablending
我用来创建一个完全透明的表格,但 png 和 32 位图像不会融合到表格中,并且图像无法正确显示其透明度。我明白了here 的概念,但我不能把按钮放在上面。除了图像背景之外,所有的下巴都是不可见的。顺便说一下我的编译器是delphi7和D2009
【问题讨论】:
标签: delphi forms alphablending
似乎 Andreas Hausladen 偶然发现了一个类似的问题,并且已经实现了一个解决方案:他在 JVCL 库中重写了 TJvTransparentForm。
即使您不打算直接使用该组件,您也可以通过研究源代码获得一些见解。
Here 是 Andreas 文章的链接。
【讨论】:
如果您想使用 PNG 来控制透明度,您可能需要查看“分层窗口”:
这允许您在整个窗口中具有可变的透明度,就像 PNG 允许的那样!问题是,分层窗口上的控件实际上不起作用,我想这是一个 Windows 问题。我的解决方案实际上是将大窗口分解为多个较小的窗口,所有控件都在非分层窗口上。这又产生了另一个问题,因为您现在有多个窗口,并且您希望它们像单个窗口一样移动。解决方案:实现您自己的算法来在屏幕上移动窗口并使用:
... 一次移动所有窗口,所以用户不知道她正在查看多个窗口!最后,如果你想变得花哨,你可能想看看 SetWindowRgn:它允许你创建一个非矩形的窗口。
P.S:从 Uwe Raabe 处阅读 Andrea 的链接,他使用了相同的技术,只是他将其打包以准备行动!
【讨论】: