gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:15:15 24 4
gpt4 key购买 nike

我需要使用 Direct2D 创建透明位图并使用我的设备上下文在其上绘制。

ID2D1DeviceContext1* d2dContext = ...
ID2D1Bitmap* pBitmap;

d2dContext->CreateBitmap(
bitmapSize,
nullptr,
0,
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 .希望这会有所帮助。

关于c++ - 如何在 Direct2D 中创建透明位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39900556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com