是否有可能形成一个形状为α的混合对话框?

时间:2010-05-19 16:24:55

标签: c++ user-interface wtl

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

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

有没有人知道任何API函数来完成此任务(WTL的一部分,或从WTL可以访问)?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

This article展示了如何在所有目标平台上使用WTL和Gdi + API的分层窗口。