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

填充形状时,必须将 Brush 对象的地址传递给 图形 类的填充方法之一。 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);

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

illustration showing an image overlaid by three ellipses: one opaque, one slightly transparent, one very transparent