欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 17.2 图形绘制2

17.2 图形绘制2

2025/2/1 18:30:29 来源:https://blog.csdn.net/UruseiBest/article/details/145408273  浏览:    关键词:17.2 图形绘制2

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

17.2.3 Brush类

Brush 类用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部。这是一个抽象基类,不能进行实例化。如果若要创建一个画刷对象,应使用从 Brush 派生出的类,包括:

  1. SolidBrush类:单种颜色来填充形状的内部。
  2. TextureBrush类:使用图像来填充形状的内部。
  3. HatchBrush类:用阴影样式来填充形状的内部。
  4. LinearGradientBrush类:使用线性渐变来填充形状的内部。
  5. PathGradientBrush类:通过路径渐变来填充形状的内部。

注意:后面三种画刷都是在System.Drawing.Drawing2D命名空间下面。

17.2.3.1 SolidBrush类

SolidBrush构造函数:

  1. public SolidBrush( Color color )

参数说明:

  1. color:指定了画刷使用的颜色。

例如声明一个红色的画刷:

SolidBrush myBrush = new SolidBrush(Color.Red);

SolidBrush常用属性:

  1. Color:画笔使用的颜色。

【例 17.6【项目:code17-006】使用SolidBrush填充图形。

        private void button1_Click(object sender, EventArgs e)

        {

            //使用红色初始化画刷

            SolidBrush myBrush = new SolidBrush(Color.Red);

            //窗体上创建Graphics对象

            Graphics g = this.CreateGraphics();

            //使用窗体背景色清除

            g.Clear(this.BackColor);

            //使用画刷填充一个矩形

            g.FillRectangle(myBrush, new Rectangle(10, 10, 120, 120));

            //更改画刷颜色

            myBrush.Color = Color.Blue;

            //再次使用画刷填充矩形

            g.FillRectangle(myBrush, new Rectangle(130, 10, 120, 120));

            //释放资源

            g.Dispose();

        }

运行结果如下图所示:

图17-7 使用SolidBrush填充矩形

17.2.3.2 TextureBrush类

TextureBrush构造函数常用的一个重载版本:

public TextureBrush( Image image, WrapMode wrapMode )

参数说明:

  1. image:一个Image对象,此画刷将使用该Image来填充其内部。
  2. wrapMode:指定Image的平铺方式,这是一个WrapMode枚举,包含以下成员:
  1. Clamp:纹理或渐变没有平铺。
  2. Tile:平铺渐变或纹理。
  3. TileFlipX:水平反转纹理或渐变,然后平铺该纹理或渐变。
  4. TileFlipY:垂直反转纹理或渐变,然后平铺该纹理或渐变。
  5. TileFlipXY:水平和垂直反转纹理或渐变,然后平铺该纹理或渐变。

【例 17.7【项目:code17-007】使用TextureBrush填充图形。

        private void button1_Click(object sender, EventArgs e)

        {

            Bitmap bmp1 =new Bitmap("c:\\lessons\\g.png");

            //使用图像平铺模式

            TextureBrush myBrush =new TextureBrush(bmp1, System.Drawing.Drawing2D.WrapMode.Tile);

            Graphics g = this.CreateGraphics();

            g.Clear(this.BackColor);

            g.FillRectangle(myBrush, new Rectangle(10, 10, 120, 120));

            //更换平铺方式为水平和垂直反转

            myBrush.WrapMode = System.Drawing.Drawing2D.WrapMode.TileFlipXY;

            g.FillRectangle(myBrush, new Rectangle(130, 10, 120, 120));

            g.Dispose();

     }

运行结果如下图所示:

图17-8 使用TextureBrush填充矩形

17.2.3.3 HatchBrush类

HatchBrush构造函数常用的一个重载版本:

public HatchBrush( HatchStyle hatchstyle, Color foreColor, Color backColor )

参数说明:

  1. hatchstyle:此HatchBrush所绘制的图案。这是一个HatchStyle枚举。
  2. foreColor:Color结构,表示此HatchBrush所绘制线条的颜色。
  3. backColor:Color结构,表示此HatchBrush绘制的线条间空间的颜色。

【例 17.8【项目:code17-008】使用HatchBrush填充图形。

由于HatchStyle枚举成员众多,这里在程序中显示每种图案。

        int myHatchStyle = 0;

        private void button1_Click(object sender, EventArgs e)

        {

            myHatchStyle += 1;

            if (myHatchStyle == 53)

                myHatchStyle = 0;

            //使用不同的HatchStyle,红色前景色,白色背景色初始化HatchBrush

            HatchBrush myBrush = new HatchBrush((HatchStyle)myHatchStyle, Color.Red, Color.White);

            Graphics g = this.CreateGraphics();

            g.Clear(this.BackColor);

            g.FillRectangle(myBrush, new Rectangle(10, 10, 240, 120));

            g.Dispose();

        }

运行结果如下图所示:

图17-9 使用HatchBrush填充矩形时的一种HatchStyle图案

17.2.3.4 LinearGradientBrush类

LinearGradientBrush构造函数常用的一个重载版本:

public LinearGradientBrush( Point point1, Point point2, Color color1, Color color2 )

参数说明:

  1. point1:表示线性渐变起始点的Point结构。
  2. point2:表示线性渐变终结点的Point结构。
  3. color1:表示线性渐变起始色的Color结构。
  4. color2:表示线性渐变结束色的Color结构。

常用属性:

  1. Blend:指定定义渐变自定义过渡的位置和因子。
  2. GammaCorrection:指示是否启用了灰度校正。
  3. InterpolationColors:定义多色线性渐变的ColorBlend类。
  4. LinearColors:渐变的起始色和结束色。

注意:如果设置了InterpolationColors属性,那么ColorBlend类的Colors和Positions两个属性必须设置相同数量,而且,确保Positions中数组的值从0开始,1结束,例如:

Color[] c={ Color.Red, Color.White, Color.Blue, Color.White, Color.Green };

 Single[] p = { 0, 0.25f, 0.5f, 0.75f, 1.0f};

【例 17.9【项目:code17-009】使用LinearGradientBrush填充图形。

        //生成红-白渐变的矩形

        private void button1_Click(object sender, EventArgs e)

        {

            LinearGradientBrush myBrush = new LinearGradientBrush(new Point(0, 0), new Point(100, 0), Color.Red, Color.White);

            Graphics g = this.CreateGraphics();

            g.Clear(this.BackColor);

            g.FillRectangle(myBrush, new Rectangle(10, 10, 300, 120));

            g.Dispose();

        }

        //生成红-白-蓝-白-绿渐变的矩形

        private void button2_Click(object sender, EventArgs e)

        {

            LinearGradientBrush myBrush = new LinearGradientBrush(new Point(0, 0), new Point(100, 0), Color.Red, Color.White);

            ColorBlend myColorBlend = new ColorBlend();

            Color[] c={ Color.Red, Color.White, Color.Blue, Color.White, Color.Green };

            Single[] p = { 0, 0.25f, 0.5f, 0.75f, 1.0f};

            myColorBlend.Colors = c;

            myColorBlend.Positions = p;

            myBrush.InterpolationColors = myColorBlend;

            Graphics g = this.CreateGraphics();

            g.Clear(this.BackColor);

            g.FillRectangle(myBrush, new Rectangle(10, 10, 300, 120));

            g.Dispose();

        }

运行结果如下图所示:

图17-10 使用LinearGradientBrush填充矩形

17.2.3.5 PathGradientBrush类

PathGradientBrush构造函数常用的一个重载版本:

public PathGradientBrush( GraphicsPath path )

参数说明:

  1. path:GraphicsPath类型,定义此 PathGradientBrush 填充的区域。

PathGradientBrush常用属性:

  1. Blend:指定定义渐变自定义过渡的位置和因子。
  1. CenterColor:路径渐变的中心处的颜色。
  2. CenterPoint:路径渐变的中心点,如果没有指定,那么将自动使用
  3. SurroundColors:此PathGradientBrush填充的路径中的点相对应的颜色的数组。
  4. WrapMode:指定渐变图像的平铺方式。这是一个WrapMode枚举(请参看第17.2.3.2节),默认是Clamp(不平铺)。

【例 17.10【项目:code17-010】使用PathGradientBrush填充图形。

        private void button1_Click(object sender, EventArgs e)

        {

            //声明一个GraphicsPath类

            GraphicsPath path =new GraphicsPath();

            //向此路径添加一个矩形

            path.AddRectangle(new RectangleF(10, 10, 120, 120));

            //使用之前声明的路径初始化画刷

            PathGradientBrush myBrush = new PathGradientBrush(path);

            //定义环绕颜色数组

            Color[] myColor = { Color.Red, Color.Green, Color.Blue, Color.Yellow};

            //设置环绕颜色

            myBrush.SurroundColors = myColor;

            //设置中心点颜色

            myBrush.CenterColor = Color.White;

            //设置渐变中心点

            myBrush.CenterPoint = new Point(50, 50);

            //设置填充区域内渐变的平铺方式

            myBrush.WrapMode = WrapMode.Tile;

            Graphics g = this.CreateGraphics();

            g.Clear(this.BackColor);

            //再声明一个GraphicsPath类

            GraphicsPath pathtoFill =new GraphicsPath();

            //向此路径添加一个矩形

            pathtoFill.AddRectangle(new RectangleF(10, 10, 240, 120));

            //使用画刷填充路径

            g.FillPath(myBrush, pathtoFill);

            g.Dispose();

        }

运行结果如下图所示:

图17-11 使用PathGradientBrush填充矩形

 

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com