加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在Direct2D中创建透明位图

发布时间:2020-12-16 07:17:37 所属栏目:百科 来源:网络整理
导读:我需要使用Direct2D创建一个透明的位图,并使用我的设备上下文绘制它. ID2D1DeviceContext1* d2dContext = ...ID2D1Bitmap* pBitmap;d2dContext-CreateBitmap( bitmapSize,nullptr,D2D1::BitmapProperties1( D2D1_BITMAP_OPTIONS_TARGET,D2D1::PixelFormat(DX
我需要使用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.希望这会有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读