我目前在Direct2D中使用以下命令在OpacityMask中有一个8位位图:
m_pD2DContext->FillOpacityMask(
pBitmap,
m_pSceneBrush,
D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL,
&destRect);
其中m_pSceneBrush是SolidColorBrush
一切正常,但是位图中的像素(颜色)变暗(位图是在外部生成的,对此我没有影响。)
我想使OpacityMask更加明亮,这可能吗? (以及如何...)
我尝试使用效果,但由于GetOutput返回ID2D1Image,因此无法使其正常工作,并且需要使用“ FillOpacityMask”而不是“ DrawBitmap”进行绘制。 如果我使用DrawBitmap绘制效果,则结果是非常暗的图像(alpha可以)
伪代码:(不知道这是否适合使用)
ID2D1Effect* linearTransferEffect;
m_pD2DContext->CreateEffect(CLSID_D2D1LinearTransfer, &linearTransferEffect);
linearTransferEffect->SetInput(0, pBitmap);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT, -4.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE, 5.0f);
_Outptr_ ID2D1Image* outputImage = nullptr;
linearTransferEffect->GetOutput(&outputImage);
//m_pD2DContext->DrawImage(linearTransferEffect);
linearTransferEffect->Release();