我需要使用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();
很遗憾,我无法创建任何透明位图。我尝试了几种像素格式组合,包括D2D1_ALPHA_MODE_STRAIGHT
,但没有成功。
有什么解决方案吗?
ID2D1DeviceContext1
的DrawBitmap
方法绘制位图I。步骤如下:1)我在目标上绘制几个形状;2)我将目标更改为使用alpha模式创建的位图;3)我在位图上绘制几个形状;4)我将目标更改回原始目标;5)我绘制位图。如何启用alpha混合?不,我不能一般地绘制透明位图(请具体说明)。 - NickDrawBitmap
方法有一个不透明度参数。尝试减少不透明度并查看结果是否改变。 - Nico Schertler