C#中的GDI+


思路:设置画笔或画刷,创建Craphics类的对象,使Craphics类的方法和画笔或画刷绘制图形

(1) 设置画笔与画刷

<1> 设置画笔

Pen类主要用于设置画笔,其构造函数语法为:

public Pen(Color color,float width)

举例:设置一个画笔,使其颜色为红色,宽度为2

Pen mypen = new Pen(Color.Red,2);
  • color :设置Pen的颜色
  • width:设置Pen的宽度

Color结构主要用来定义颜色,Color结构中定义了表示颜色的常用属性,开发人员可以直接使用。

Color结构中表示颜色的常见属性和说明

属性 说明
Black 黑色
Blue 蓝色
Cyan 青色
Gray 灰色
Green 绿色
LightGray 浅灰色
Magenta 洋红色
Orange 橘黄色
Pink 粉色
Red 红色
White 白色
Yellow 黄色
<2> 设置画刷

Brush类主要用于设置画刷,用于填充几何图形 。Brush类是个抽象基类,不能用于实例化。
如果要创建一个画笔对象,需要使用从Brush类派生出的类,如SolidBrush类,HatchBrush类等。

1. SolidBrush类

SolidBrush类用于定义单色画刷,画刷用于填充图形形状(如矩形,椭圆形,扇形,多边形和封闭路径)
SolidBrush类的语法为:

public SolidBrush(Color color)
  • color :此画刷的颜色
    举例:创建一个画刷,设置该画刷的颜色为红色:
Brush myBrush = new Brush(Color.Red); //创建颜色为红色的画刷

       private void button1_Click(object sender, EventArgs e)
        {
            Brush brush = new SolidBrush(Color.Red);
            Graphics g = this.CreateGraphics();
            g.FillRectangle(brush,100,100,100,100);
       
        }

在这里插入图片描述


2. HatchBrush类

HatchBrush类提供了一种特定样式的图形,用来实现填满整个封闭区域的绘图效果
HatchBrush类的语法如下:

public HatchBrush(HatchStyle hatchstyle,Color foreColor)
  • hatchstyle: HatchStyle值之一,表示此HatchBrush所绘制的图案
  • foreColor:Color结构,表示此HatchBrush所绘制线条的图案

举例,使用HatchBrush类创建一个画刷对象,使用HatchStyle指定要绘制的图案为交叉的水平线和垂直线


Brush brush = new HatchBrush(HatchStyle.Cross,Color.Red);
 private void button1_Click(object sender, EventArgs e)
        {
            Brush brush = new HatchBrush(HatchStyle.Cross, Color.Red);
            Graphics g = this.CreateGraphics();
            g.FillRectangle(brush, 100, 100, 100, 100);
        }

在这里插入图片描述


3. LinerGradientBrush类

LinerGradientBrush类提供了一种渐变色彩的特效 ,用来填满图形的内部区域
LinerGradientBrush类的语法如下:

public LinerGradientBrush(Point point1,Point point2,Color color1,Color color2)
  • point1表示线形渐变的开始
  • point2表示线形渐变的结束
  • color1表示线形渐变的开始色彩
  • color2表示线形渐变的结束色彩
Point point1 = new Point(100,100);
Point point2 = new Point(150,150);
LinearGradientBrush brush = new LinerGradientBrush(point1,point2,Color.Red,Color.Blue);

        private void button1_Click(object sender, EventArgs e)
        {
            Point point1 = new Point(100, 100);
            Point point2 = new Point(200, 200);
            LinearGradientBrush brush = new LinearGradientBrush(point1, point2, Color.Red, Color.Blue);
            Graphics g = this.CreateGraphics();
            g.FillRectangle(brush, 100, 100, 100, 100);
        }

在这里插入图片描述


(2) Graphics类中常用的图形绘制方法

  1. 画直线 - DrawLine()
  • draw vt. 画
  • line n. 线,直线

 private void button1_Click(object sender, EventArgs e)
        {
            Pen pen = new Pen(Color.Red, 3); 
            Point point1 = new Point(100, 100);
            Point point2 = new Point(100, 150);
            Graphics g = this.CreateGraphics();
            g.DrawLine(pen, point1, point2);
        }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


  1. 画弧 - DrawArc()
  • draw vt. 画
  • arc n. 弧,弧形物

  private void button1_Click(object sender, EventArgs e)
        {
            //画弧:g.DrawArc(pen,rect,-90,90);
            //pen为画笔,rect为矩形区域,-90为起始角度:水平向右为0,顺时针为正,90为扫过角度
            Pen pen = new Pen(Color.Red, 3);
            Graphics g = this.CreateGraphics();
            Rectangle rect = new Rectangle(20, 20, 200, 200);
            g.DrawArc(pen, rect, -90, 90);
        }

在这里插入图片描述


  1. 画贝塞尔曲线 - DrawBezier()
  • draw vt. 画
  • bezier n. 贝塞尔曲线

 private void button1_Click(object sender, EventArgs e)
        {
            Pen pen = new Pen(Color.Red, 3);
            Graphics g = this.CreateGraphics();
            Rectangle rect = new Rectangle(20, 20, 200, 200);
            g.DrawBezier(pen,10,50,30,80,10,10,50,80);
        }

在这里插入图片描述
在这里插入图片描述


  1. 画非填充扇形 - DrawPie()
  • draw n. 画
  • pie n. 二维饼图

  private void button1_Click(object sender, EventArgs e)
        {
            Pen mypen = new Pen(Color.Red);
            Rectangle rect = new Rectangle(20, 20, 200, 200);
            Graphics g = this.CreateGraphics();
            g.DrawPie(mypen, rect, -45, 90);
        }

在这里插入图片描述


  1. 画非填充椭圆 - DrawEllipse()
  • draw n. 画
  • ellipse n. [数] 椭圆形,[数] 椭圆

  private void button1_Click(object sender, EventArgs e)
        {
            Pen mypen = new Pen(Color.Red);

            Graphics g = this.CreateGraphics();

            Rectangle rect = new Rectangle(20, 20, 200, 200);

            g.DrawEllipse(mypen, rect);

        }

在这里插入图片描述


  1. 画非填充矩形 - DrawRectangle()
  • draw vt. 画
  • rectangle n. 矩形

private void button1_Click(object sender, EventArgs e)
{
    Pen mypen = new Pen(Color.Red);
    Graphics g = this.CreateGraphics();
    Rectangle rect = new Rectangle(80, 80, 180, 180);
    g.DrawRectangle(mypen, rect);
}

在这里插入图片描述


  1. 画非填充多边形 - DrawPolygon()
  • draw vt. 画
  • polygon n.n. 多边形

     private void button1_Click(object sender, EventArgs e)
        {
            Pen pen = new Pen(Color.Red);
            Point[] pis = new Point[] { new Point(10, 10), new Point(130, 50), new Point(100, 200), new Point(70, 200), new Point(10, 20) };
            Graphics g = this.CreateGraphics();
            g.DrawPolygon(pen, pis);
        }

在这里插入图片描述


  1. 画文本 - DrawString
  • draw vt. 画
  • string n.字符串

      private void button1_Click(object sender, EventArgs e)
        {
            Brush brush = new SolidBrush(Color.Red);
            Graphics g = this.CreateGraphics();
            g.DrawString("黑夜将至",new Font("隶书",16),brush,10,10);
        }

在这里插入图片描述
在这里插入图片描述


  1. 画填充扇形 - FillPie()
  • fill n.装满 填满 填充
  • pie n. 二维饼图

  private void button1_Click(object sender, EventArgs e)
        {
            //画填充扇形:g.FillPie(brush,rect,-45,90);
            //bursh是画笔,rect是矩形区域,-45是起始角度:水平向右为0,逆时针为负,90扫过角度
            SolidBrush brush = new SolidBrush(Color.Red);
            Graphics g = this.CreateGraphics();
            Rectangle rect = new Rectangle(20, 20, 200, 200);
            g.FillPie(brush, rect, -45, 90);
        }

在这里插入图片描述


  1. 画填充椭圆形 - FillEllipse()
  • fill n.装满 填满 填充
  • ellipse n. 椭圆

     private void button1_Click(object sender, EventArgs e)
        {
            SolidBrush mybrush = new SolidBrush(Color.Red);
            Rectangle rect = new Rectangle(20, 20, 200, 200);
            Graphics g = this.CreateGraphics();
            //ellipse n.椭圆
            g.FillEllipse(mybrush, rect);
        }

在这里插入图片描述


  1. 画填充矩形 - FillRectangle()
  • fill n.装满 填满 填充
  • rectangle n. 矩形

private void button1_Click(object sender, EventArgs e)
{
   SolidBrush mybrush = new SolidBrush(Color.YellowGreen);
   Graphics g = this.CreateGraphics();
   Rectangle rect = new Rectangle(80, 80, 180, 180);
   g.FillRectangle(mybrush, rect);
}

在这里插入图片描述


  1. 画填充多边形 - FillPolygon()
  • fill n.装满 填满 填充
  • polygon n.n. 多边形
 private void button1_Click(object sender, EventArgs e)
{
   SolidBrush brush = new SolidBrush(Color.Red);
   Point[] pis = new Point[] { new Point(10, 10), new Point(130, 50), new Point(100, 200), new Point(70, 200), new Point(10, 20) };
   Graphics g = this.CreateGraphics();
   g.FillPolygon(brush, pis);
}

在这里插入图片描述

©️2020 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值