【发布时间】:2015-01-22 04:34:19
【问题描述】:
关于 Delphi XE 的快速问题。
我正在尝试制作一个具有透明背景的自定义圆形组件,以便在添加到表单时,该组件可以与其他组件重叠。我已经尝试过Brush.Style:=bsTransparent; 或ellipse() 等等...但仍然找不到使边缘区域透明的方法。
无论如何我可以在不使用其他 lib 或 api 的情况下使组件的边缘区域透明吗?
【问题讨论】:
-
您是否考虑过 ExtCtrls.TShape 作为示例? (如果 TGraphicControl 适合您)
-
TGraphicControl 在其父级的画布上进行绘制,因此永远不会在按钮或面板等窗口控件上进行绘制。 TWinControl 后代不能是透明的,但您可以通过在绘制圆圈之前绘制其下方的内容来伪造它。您也需要处理 WM_ERASEBACKGROUND。或者有一个你可以轻松继承的类,我从未使用过它,但看起来它可以解决问题:TCustomTransparentControl。有关如何使用它的详细信息,请参阅stackoverflow.com/questions/6682396/transparent-tcustomcontrol。
标签: delphi components transparent shape