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

更新:2007 年 11 月

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

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

示例

下面的示例先绘制位图,然后以该位图作为背景再绘制三条线条。第一个线条的 alpha 分量的值是 255,因此它是不透明的。第二个和第三个线条的 alpha 分量的值为 128,因此它们是半透明的,您可透过线条看到背景图像。用于设置 CompositingQuality 属性的语句导致在混合第三个线条时伴随灰度校正。

下面的插图显示以下代码的输出。

不透明和半透明

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)

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);

编译代码

前面的示例是为使用 Windows 窗体而设计的,它需要 Paint 事件处理程序的参数 PaintEventArgse。

请参见

任务

如何:使控件拥有透明背景

如何:创建透明 Windows 窗体

如何:用不透明和半透明的画笔绘制

其他资源

Alpha 混合线条和填充