使用不透明和半透明画笔绘图

填充形状时,必须将 Brush 对象的地址传递给 Graphics 类的填充方法之一。 SolidBrush 构造函数的一个参数是 Color 对象。 若要填充不透明的形状,将颜色的 alpha 分量设置为 255。 若要填充半透明的形状,将 alpha 分量设置为从 1 到 254 之间的任何值。

当填充半透明形状时,形状的颜色与背景的颜色混合。 alpha 分量指定形状和背景色的混合方式;alpha 值接近 0 时,背景色的权重更大,接近 255 的 alpha 值对形状颜色的权重更大。

以下示例绘制一个图像,然后填充与图像重叠的三个椭圆。 第一个椭圆使用值为 255 的 alpha 分量,因此它是不透明的。 第二个和第三个椭圆使用值为 128 的 alpha 分量,因此它们是半透明的;还可透过椭圆看到背景图像。 调用 Graphics::SetCompositingQuality 会导致第三个椭圆的混合与伽玛校正一起完成。

Image image(L"Texture1.jpg");
graphics.DrawImage(&image, 50, 50, image.GetWidth(), image.GetHeight());
SolidBrush opaqueBrush(Color(255, 0, 0, 255));
SolidBrush semiTransBrush(Color(128, 0, 0, 255));
graphics.FillEllipse(&opaqueBrush, 35, 45, 45, 30);
graphics.FillEllipse(&semiTransBrush, 86, 45, 45, 30);
graphics.SetCompositingQuality(CompositingQualityGammaCorrected);
graphics.FillEllipse(&semiTransBrush, 40, 90, 86, 30);

下图显示了上述代码的输出。

显示由三个椭圆覆盖的图像的插图:一个不透明,一个稍微透明,一个非常透明