TWinControl的不透明度?

utk*_*tas 2 delphi graphics vcl alphablending opacity

如何改变基于TWinControl的控件的不透明度?为什么他们没有将这种能力添加到TControl/TWinControl级别(为什么只有TForm)?

J__*_*J__ 5

谢谢Lars.

我不知道你怎么做.据我了解,Windows只为Windows添加了半透明,这就是为什么TForm可以处理它,而不是单独的控件.请记住,大多数VCL只是Windows公共控件的包装器,因此如果Windows不这样做,相关的VCL控件也很少.然后,第三方组件通常会扩展基本功能.

  • 请编辑这个,甚至控件都是窗口(`HWND`类型).重要的一点是,支持不仅适用于没有`WS_CHILD`风格的窗口.具有重写的`CreateParams`方法的表单设置`WS_CHILD`样式也不能是半透明的. (3认同)

Rob*_*edy 5

控制窗口的不透明度由称为分层窗口的功能提供.您可以在MSDN上阅读有关该功能的更多信息.该功能仅适用于顶级窗口.据我所知,桌面窗口管理器(Vista的"玻璃"效果)也只适用于顶级窗口.

可用于子窗口的替代方法是使用窗口区域窗口的某些区域标记为完全透明,或者使用位图alpha混合来自己绘制整个控件.