我需要使用Direct2D创建一个透明的位图,并使用我的设备上下文绘制它.
ID2D1DeviceContext1* d2dContext = ... ID2D1BitmaP* pBitmap; d2dContext->CreateBitmap( bitmapSize,nullptr,D2D1::BitmapProperties1( D2D1_BITMAP_OPTIONS_TARGET,D2D1::PixelFormat(dxgi_FORMAT_B8G8R8A8_UnorM,D2D1_ALPHA_MODE_PREMULTIPLIED),dpiX,dpiY),&pBitmap); d2dContext->BeginDraw(); d2dContext->SetTarget(pBitmap); d2dContext->Clear(D2D1::ColorF(0,0)); d2dContext->DrawLine(...); hr = d2dContext->EndDraw();
不幸的是,我无法创建任何透明的位图.我尝试了几个pixel format combinations,包括D2D1_ALPHA_MODE_STRAIGHT,但没有成功.
有什么解决方案吗?
解决方法
好消息Nick:您正在创建透明位图,但是您没有看到预期结果的原因与窗口创建有关. Kenny Kerr演示了正确的分层窗口创建
with Direct2D back in 2009 here.
从那以后,在Windows渲染方面发生了很多变化,Win8和Win10使用了合成引擎,并允许开发人员访问DirectComposition API.结果,Kenny Kerr提供了关于该主题的an updated article in 2014.
我最近的项目需要Win7支持,所以我个人坚持使用纯Direct2D.
编辑:当然要确保你的render target is properly created.希望这会有所帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。