填充形状时,必须将对象 Brush 传递给类的 Graphics 填充方法之一。 构造函数的 SolidBrush 一个参数是一个 Color 对象。 若要填充不透明形状,请将颜色的 alpha 分量设置为 255。 若要填充半透明形状,请将 alpha 分量设置为从 1 到 254 的任何值。
填充半透明形状时,形状的颜色与背景的颜色混合。 alpha 组件指定形状和背景颜色的混合方式;alpha 值接近 0 时,背景颜色的权重更大,而接近 255 的 alpha 值对形状颜色的权重也更高。
示例:
以下示例首先绘制一个位图,然后填充与该位图重叠的三个椭圆。 第一个椭圆使用 255 的 alpha 分量,因此它是不透明的。 第二个和第三个椭圆使用 128 的 alpha 分量,因此它们是半透明的:可以通过省略号查看背景图像。 调用设置 CompositingQuality 属性的过程会使第三个椭圆的混合与伽玛校正结合进行。
Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height);
SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));
e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);
Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height)
Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))
e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)
e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)
下图显示了以下代码的输出:
编译代码
前面的示例专用于 Windows 窗体,它需要 PaintEventArgse
,这是 PaintEventHandler 的参数。