透明窗口与模糊的角落

时间:2013-06-12 21:54:55

标签: c++ winapi user-interface

我想要一个带有模糊边缘的WS_POPUP窗口,如下图所示:

enter image description here

有什么建议吗?我一直在寻找分层窗口,但仍然不知道如何在边缘实现完整的透明像素。也许我可以在整个窗口上放置一个位图但是如何使背景透明?如果我有一个带位图的分层窗口,则完整的位图变得透明。

1 个答案:

答案 0 :(得分:3)

您需要使用分层窗口(具有WS_EX_LAYERED扩展窗口样式集的窗口)并使用UpdateLayeredWindow函数提供带有alpha通道的32位位图。

此功能的文档位于:http://msdn.microsoft.com/en-us/library/windows/desktop/ms633556(v=vs.85).aspx

基本上,您不再使用带有WM_PAINT的标准绘制循环,而只是为窗口的整个内容提供完整的32位位图。请注意,API使用预乘alpha ,这意味着位图中的红色,绿色和蓝色通道值必须与alpha通道值预乘(在此处说明:http://msdn.microsoft.com/en-us/library/windows/desktop/dd183393(v=vs.85).aspx)。