Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以创建一个成形的alpha混合对话框?_C++_User Interface_Wtl - Fatal编程技术网

C++ 是否可以创建一个成形的alpha混合对话框?

C++ 是否可以创建一个成形的alpha混合对话框?,c++,user-interface,wtl,C++,User Interface,Wtl,我正在制作一个非矩形对话框,以Photoshop中的图像为模型(图像是对话框的背景,用户将通过图像的透明部分看到)。我喜欢一个带有一些自定义控件的媒体应用程序的仪表板风格的窗口。大多数背景图像要么是不透明的,要么是100%透明的——但在这两者之间有一小块部分透明的像素,用来将图像平滑地混合到背景中。这对网络图形非常有用,但我还没有找到一种方法使它在Windows上工作。我使用的是Windows模板库(WTL),msvc 2008-该应用程序必须在Windows XP以及Vista和Windows

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

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


有没有人知道有什么API函数可以实现这一点(WTL的一部分,或者可以从WTL访问)?

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

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

展示了如何将分层窗口与WTL和Gdi+API一起使用,该API在您的所有目标平台上都可用。

我在另一个项目中尝试了具有WS_EX_分层样式的分层windwos,事实证明,我可以淡入淡出窗口,但每像素混合以布尔方式工作。每个像素要么可见,要么不可见。Direct2D可能会工作,但很抱歉,它不适用于Windows XP。我以前使用分层窗口显式制作alpha混合(阴影)表单,没有任何问题。Alain有一个链接,可以将WTL与分层窗口样式一起使用,请查看。AlphaBlend()在WTL中工作正常,但我无法透明地混合到应用程序窗口的背景中。