winapi - 使用LWA_COLORKEY的SetLayeredWindowAttributes只将像素设置为完全不透明或完全透明?

时间:2012-09-03 19:00:52

标签: c++ windows winapi

我的画面边框是白色的(0xfffffffe)。我的框架内部是黑色(0xff000000)。 我想让边框半透明(alpha值为100),内部不透明。显然,我已经使用SetLayeredWindowAttributes来做这件事,但它没有用。

此变体:SetLayeredWindowAttributes(RGB(0xxff, 0xff, 0xfe), 100, LWA_COLORKEY)将边框设置为alpha为100,但内部为完全透明。

此变体:SetLayeredWindowAttributes(RGB(0xxff, 0xff, 0xfe), 100, LWA_COLORKEY | LWA_ALPHA)将内部设置为100的alpha,但将边框设置为完全透明。

如何使内部不透明,边框透明?我不能使用多个顶级窗口来实现这种情况下的影响。

1 个答案:

答案 0 :(得分:1)

使用UpdateLayeredWindow而不是SetLayeredWindowAttributes。您可以将整个帧(包括任何透明度)预渲染到32位位图上,将其选择为DC并将其传递给UpdateLayeredWindow