绘制线条时,必须将对象 Pen 传递给 DrawLine 类的方法 Graphics 。 构造函数的参数 Pen 之一是对象 Color 。 若要绘制不透明的线条,请将颜色的 alpha 分量设置为 255。 若要绘制半透明线,请将 alpha 分量设置为从 1 到 254 的任何值。
在背景上绘制半透明线条时,线条的颜色与背景的颜色混合。 alpha 组件指定线条和背景颜色的混合方式;alpha 值接近 0 时,背景色的权重将增加,而接近 255 的 alpha 值在线条颜色上放置的权重更大。
示例:
以下示例绘制一个位图,然后绘制三行将位图用作背景。 第一行使用 255 的 alpha 分量,因此不透明。 第二行和第三行使用 alpha 分量为 128,因此它们是半透明的:可以通过线条查看背景图像。 设置 CompositingQuality 属性的语句会导致第三行的混合与伽玛校正结合进行。
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)
下图显示了以下代码的输出:
编译代码
前面的示例设计用于 Windows 窗体,它需要 PaintEventArgse
,这是 Paint 事件处理程序的参数。