0

虽然这个问题有很多变体,但对于想要在使用 Win32 的透明窗口上使用内置通用控件的简单案例似乎没有具体的答案。我不希望控件是透明的,我只希望它周围的边框是透明的。我不敢相信 MS 在添加时没有更新 .dll 来处理透明度,但我猜他们忘记了?有没有具体的方法有效。一个按钮可以通过 WS_EX_TRANSPARENT 接近,但在大多数情况下它工作的地方很不稳定,但有时会出现部分边框。编辑控件,根据何时获得焦点进行更改。

所以问题很简单:

有没有办法在透明窗口上制作通用控件,因此它们周围没有白色边框?

如果没有,是否有一个很好的替代库可以通过所有者绘制来完成?

如果有的话,有哪些,方法是什么?

仅仅因为控件周围的区域而重新发明轮子似乎很愚蠢。

蒂亚!!

4

1 回答 1

0

如果我没记错的话,你可以采取以下步骤来达到这个效果。

1.创建一个像素格式的GDI+位图对象。PixelFormat32bppPARGB

2.创建一个Graphics对象来绘制这个Bitmap对象。

3. 使用 .Do 将所有绘图放入此对象中GDI+

4.销毁Graphics步骤2中创建的对象。

5.调用GetHBITMAPBitmap 对象上的方法来获取一个 Windows HBITMAP

6.销毁Bitmap对象。

7.创建一个内存 DC 使用CreateCompatibleDCHBITMAP从步骤 5 中选择它。

8.UpdateLayeredWindow使用内存DC作为源调用。

9.选择上一个位图并删除内存DC。

10.销毁HBITMAP步骤5中创建的。

此方法应该允许您控制所有绘制的 alpha 通道:背景透明,按钮不透明。

类似的讨论:包含不透明文本和按钮的透明窗口

于 2019-06-13T09:08:53.827 回答