绘制不透明和半透明线条

绘制线条时,必须将 Pen 对象的地址传递给 Graphics 类的 DrawLine 方法。 Pen 构造函数的参数之一是 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, 10, 5, image.GetWidth(), image.GetHeight());
Pen opaquePen(Color(255, 0, 0, 255), 15);
Pen semiTransPen(Color(128, 0, 0, 255), 15);
graphics.DrawLine(&opaquePen, 0, 20, 100, 20);
graphics.DrawLine(&semiTransPen, 0, 40, 100, 40);
graphics.SetCompositingQuality(CompositingQualityGammaCorrected);
graphics.DrawLine(&semiTransPen, 0, 60, 100, 60);

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

显示由三条宽线覆盖的图像的插图:一条不透明,一条略透明,一条非常透明