1

我正在制作一个非矩形对话框,以 Photoshop 中的图像为模型(图像是对话框的背景,用户将通过图像的透明部分看到)。我就像一个带有一些自定义绘制控件的媒体应用程序的仪表板样式窗口。大多数背景图像要么是不透明的,要么是 100% 透明的——但在两者之间有一个部分透明像素的薄区域,用于将图像平滑地融合到背景中。这对网络图形很有用,但我还没有找到一种方法来使它适用于 Windows 窗口。我正在使用 Windows 模板库 (WTL)、msvc 2008 - 该应用程序必须在 Windows XP 以及 Vista 和 Windows 7 上运行。

目前,我只是使用背景图像的不透明部分来创建 GDI 剪辑区域,但这会产生非常粗糙的边缘。

有谁知道任何 API 函数来完成这个(WTL 的一部分,或可从 WTL 访问)?

4

3 回答 3

0

不确定这如何与 WTL 互操作,但请查看AlphaBlend函数。您需要将部分透明的位图选择到 DC 中,然后在绘图功能中将其复制到对话框的 DC。

于 2010-05-19T16:39:54.420 回答
0

也许您可以使用分层窗口?我没有用 WTL 测试过这些,但你应该能够得到你想要的效果。据我所知,我认为您不能将控件添加到分层窗口,因此您需要将其附加到另一个(非分层)窗口才能使用控件。

于 2010-05-19T18:42:11.363 回答
0

本文展示了如何通过 WTL 和 Gdi+ API 使用分层窗口,该 API 在您的所有目标平台上都可用。

于 2010-05-19T23:57:24.397 回答