我使用GDI+ Graphics.DrawImage()方法在我的应用程序中绘制元文件图像(emf / wmf)。此方法允许通过ImageAttributes
设置颜色矩阵。我使用颜色矩阵来执行图像alpha混合(绘制半透明图像),如下所示:
const auto alphaPercent = 0.5f
ColorMatrix colorMatrix = {
1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, alphaPercent, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f, 1.0f
};
ImageAttributes imageAttributes;
imageAttributes.SetColorMatrix(&colorMatrix, ColorMatrixFlagsDefault, ColorAdjustTypeDefault);
pGraphics->DrawImage(pImageToDraw,imagePosition, 0.f, 0.f, sourceWidth, sourceHeight, UnitPixel, &imageAttributes);
此方法非常适用于位图,但不适用于emf元文件。
将ColorAdjustTypeDefault
更改为ColorAdjustTypePen
或ColorAdjustTypeBrush
并不会有帮助。
如何使用alpha混合在GDI +中绘制元文件图像?