我有一个类,它能够显示带有Direct 2d的动画GIF文件,如本例中的MSDN所示:
我展示的GIF是一个不断增长/收缩的未填充蓝色圆圈。所有其他像素均为白色/背景为白色。
与发布的示例不同,我创建了一个CWnd,没有Caption和Border,具有GIF的大小,ID2D1RenderTarget填充整个CWnd并将其放在我的MainFrame的内容之上。
由于我之前从未使用过Direct2d,因此我可以在CWnd上简单地应用SetLayerdWindow()来实现仅显示蓝色圆圈的目标。
SetLayeredWindowAttributes(RGB(255,255,255), 204, LWA_ALPHA | LWA_COLORKEY);
这会导致CWnd没有白色像素+ 80%透明度。不幸的是,生成的窗口是80%透明的,但是没有删除的WhitePixel /仍然绘制了白色像素。
为什么LWA_COLORKEY在这种情况下不起作用? 我怎样才能实现我的CWnd或ID2D1HwndRenderTarget将白色绘制为完全透明?!
注意:
除此之外,我还试图通过ID2D1HwndRenderTarget绘制完全透明的背景,如:
m_pHwndRT->Clear(D2D1::ColorF(D2D1::ColorF::White, 0.0f));
微软声明:"要构建的颜色的alpha值。 Alpha通道值的范围为0.0到1.0,其中0.0表示完全透明的颜色,1.0表示完全不透明的颜色。默认值为1.0。"
这导致一个完全白色的不透明窗口...这让我想知道整个透明度的东西是否正常工作