画图------Brush

SolidBrush继承自Brush,表示单色的笔刷。
Brushes 类则继承自System.Object。它提供了一些标准颜色的画笔,包含静态的只读属性,这些属性返回由属性名指示的颜色的 Brush 对象。通常不必显式处置由此类中的属性返回的画笔,除非该画笔用于构造新画笔。因此,没有必要创建Brushes 类的实例
可以这么看Brush brush = Brushes.Green 和 Brush brush = new SolidBrush(Color.Green) 是等效的。只不过后者一般是需要 brush.Dispose() 的,前者不需要。
还有其他的继承自 Brush 的类
System.Drawing.Drawing2D.HatchBrush(阴影、前景色和背景色定义的矩形笔刷)
System.Drawing.Drawing2D.LinearGradientBrush(线性渐变笔刷)
System.Drawing.Drawing2D.PathGradientBrush(用渐变填充 GraphicsPath 对象的内部的笔刷)
System.Drawing.TextureBrush(用图像来填充形状的内部的笔刷)


//实现功能:用Brush画图

//   1)创建的渐变色Brush(LinearGradientBrush,用完后应及时Dispose.)

//   2)Brushes绘图.(无须创建Brush)

 //  3)创建自定义颜色的SolidBrush 

//   4)画矩形,椭圆,扇形,多边形

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Drawing.Drawing2D;//另添加

 

namespace myDrawBrushA

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            SetStyle(ControlStyles.Opaque, true);//本例由于在OnPaint()中将客户区先涂上白色后再绘画,所以此句可有可无。

        }

 

        protected override void OnPaint(PaintEventArgs e)

        {

            //base.OnPaint(e);

            Graphics g = e.Graphics;

            g.FillRectangle(Brushes.White, ClientRectangle);//全部客户区涂上白色

            g.FillRectangle(Brushes.Red, new Rectangle(20, 20, 80, 80));//红色正方形

 

            //以下创建一个Brush画渐变色正方形

            Brush linearGradientBrush = new LinearGradientBrush(

                new Rectangle(20, 110, 80,80), Color.Blue, Color.White,45);//创建渐变色brush,渐变方向:45-左上至右下;90-向下:......

            g.FillRectangle(linearGradientBrush, new Rectangle(20, 110, 80, 80));//画渐变色正方形

            linearGradientBrush.Dispose();//注意及时删除渐变色brush

 

            //以下用Brushes(不要创建Brush)

            g.FillEllipse(Brushes.Aquamarine, new Rectangle(110,20, 100, 60));//椭圆(前两个参数是外接矩形左上角坐标)

            g.FillPie(Brushes.Chartreuse, new Rectangle(110, 110, 80, 80), 90, 270);//扇形(207为圆心角度数,90为扇形旋转的角度

            g.FillPolygon(Brushes.BlueViolet, new Point[]{

                new Point(220,10),

                new Point(300,10),

                new Point(250,40),

                new Point(350,80),

                new Point(230,100)

            });       //多边形

 

         //以下用创建自定义颜色的SolidBrush画圆

                 

            SolidBrush trnsRedBrush = new SolidBrush(Color.FromArgb(120, 255, 0, 0));

            SolidBrush trnsGreenBrush = new SolidBrush(Color.FromArgb(120, 0, 255, 0));

            SolidBrush trnsBlueBrush = new SolidBrush(Color.FromArgb(120, 0, 0, 255));

            // Base and height of the triangle that is used to position the

            // circles. Each vertex of the triangle is at the center of one of the

            // 3 circles. The base is equal to the diameter of the circles.

            float triBase = 50;

            float triHeight = (float)Math.Sqrt(3 * (triBase * triBase) /4);

            // Coordinates of first circle's bounding rectangle.

            float x1 = 200;

            float y1 = 100;

            // Fill 3 over-lapping circles. Each circle is a different color.

            g.FillEllipse(trnsRedBrush, x1, y1, 2 * triHeight, 2 * triHeight);

            g.FillEllipse(trnsGreenBrush, x1 + triBase / 2, y1 + triHeight,

            2 * triHeight, 2 * triHeight);

            g.FillEllipse(trnsBlueBrush, x1 + triBase, y1, 2 * triHeight, 2 * triHeight);

        }

    }

}

原文地址:https://www.cnblogs.com/1175429393wljblog/p/4548509.html