使用透明颜色绘制/创建ID2D1RenderTarget

时间:2016-08-01 15:11:21

标签: c++ mfc transparency direct2d

我有一个类,它能够显示带有Direct 2d的动画GIF文件,如本例中的MSDN所示:

https://code.msdn.microsoft.com/windowsapps/Windows-Imaging-Component-65abbc6a/sourcecode?fileId=127204&pathId=969071766

我展示的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。"

     

这导致一个完全白色的不透明窗口...这让我想知道整个透明度的东西是否正常工作

0 个答案:

没有答案