如何:绘制不透明和半透明的线条

绘制线条时,必须将 Pen 对象传递给 Graphics 类的 DrawLine 方法。 Pen 构造函数的参数之一是 Color 对象。 若要绘制不透明的线条,请将颜色的 alpha 分量设置为 255。 若要绘制半透明的线条,请将 alpha 分量设置为从 1 到 254 的任何值。

在背景上绘制半透明的线条时,线条的颜色与背景的颜色混合。 alpha 分量指定线条和背景色混合的方式;alpha 值越接近 0,背景颜色的权重越大,alpha 值越接近 255,线条颜色的权重越大。

示例

下面的示例绘制一个位图,然后制使用该位图作为背景绘三条线。 第一条线使用值为 255 的 alpha 分量,因此它是不透明的。 第二条和第三条线使用值为 128 的 alpha 分量,因此它们是半透明的;你可透过线条看到背景图像。 设置 CompositingQuality 属性的语句会导致第三条线的混合与 gamma 矫正一起完成。

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height);

Pen opaquePen = new Pen(Color.FromArgb(255, 0, 0, 255), 15);
Pen semiTransPen = new Pen(Color.FromArgb(128, 0, 0, 255), 15);

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20);
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60);
Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height)

Dim opaquePen As New Pen(Color.FromArgb(255, 0, 0, 255), 15)
Dim semiTransPen As New Pen(Color.FromArgb(128, 0, 0, 255), 15)

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20)
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40)

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60)

下图显示以下代码的输出:

Illustration that shows opaque and semitransparent output

编译代码

前面的示例专用于 Windows 窗体,它需要 PaintEventArgse,后者是 Paint 事件处理程序的参数。

另请参阅