天天看点

C# GDI+ 简单画图小例子(适合新手)

C# GDI+ 简单画图小例子(适合新手)

如有转载,请注明出处:http://www.cnblogs.com/flydoos/archive/2011/09/22/2184943.html

C# GDI+ 简单画图小例子(适合新手)

专门写给新手看的,加了一些人性化的注释,便于新手理解。高手请飘过,嘻嘻

/*  标题:C# GDI+ 简单画图小例子
 * 作者:flydoos
 * QQ群:C#/Java技术交流群(96020642)
 * 博客: http://flydoos.cnblogs.com
 * 微博: http://weibo.com/flydoos
 * 日期:2011-09-22
 * 
 * 因为都非常相似,其他的就不写了
 * 例如:绘制一个填充的多边形 DrawPolygon、FillPolygon
 * 自己看提示去写吧
 * 
  */

using System;
using System.Drawing;
using System.Windows.Forms;

namespace GDI_Demo
{
     public  partial  class MainForm : Form
    {
         public MainForm()
        {
            InitializeComponent();
        }

         // 画直线
         private  void btnDrawLine_Click( object sender, EventArgs e)
        {
            Graphics g =  this.CreateGraphics();
            Color red = Color.FromArgb( 255,  0,  0);
            Pen blackPen =  new Pen(red,  3);
            Point point1 =  new Point( 100,  100);  // 坐标(100,100)
            Point point2 =  new Point( 500,  100);  // 坐标(500,100)
            g.DrawLine(blackPen, point1, point2);  // 两个坐标连成直线
        }

         // 强制对象进行重绘
         private  void btnInvalidate_Click( object sender, EventArgs e)
        {
            Rectangle r =  new Rectangle( 10,  10,  200,  400);  // 从坐标(10,10)开始,定义一个宽度200,高度200的矩形区域
             this.Invalidate(r);
        }

         // 清除整个绘图画面并以某种颜色填充
         private  void btnClear_Click( object sender, EventArgs e)
        {
            Graphics g =  this.CreateGraphics();
            g.Clear(Color.Red);
        }

         // 画弧线
         private  void btnDrawArc_Click( object sender, EventArgs e)
        {
            Graphics g =  this.CreateGraphics();
            Rectangle r =  new Rectangle( 10,  10,  200,  100);
            Pen pen1 =  new Pen(Color.Black);
            g.DrawArc(pen1,  50,  50,  200,  200,  180,  90);  // 起始坐标(50,50),宽度200,高度200,弧线的起始角度180°,弧线经过角度90°
            g.DrawArc(pen1, r,  0,  135);
        }

         // 画椭圆、填充椭圆
         private  void btnDrawEllipse_Click( object sender, EventArgs e)
        {
            Graphics g =  this.CreateGraphics();
            Rectangle r =  new Rectangle( 10,  10,  200,  100);
            Pen pen1 =  new Pen(Color.Black);
             // 椭圆
            g.DrawEllipse(pen1,  50,  50,  200,  200);   // 起始坐标(50,50),宽度200,高度200
            g.DrawEllipse(pen1, r);
             // 填充椭圆
            g.FillEllipse( new SolidBrush(Color.Blue),  50,  50,  200,  200);
            g.FillEllipse( new SolidBrush(Color.DarkOrange), r);
        }

         // 画矩形、填充矩形
         private  void btnRectangle_Click( object sender, EventArgs e)
        {
            Graphics g =  this.CreateGraphics();
            Rectangle r =  new Rectangle( 10,  10,  200,  100);
            Pen pen1 =  new Pen(Color.Black);
             // 矩形
            g.DrawRectangle(pen1,  50,  50,  200,  200);   // 起始坐标(50,50),宽度200,高度200
            g.DrawRectangle(pen1, r);
             // 填充矩形
            g.FillRectangle( new SolidBrush(Color.Blue),  50,  50,  200,  200);
            g.FillRectangle( new SolidBrush(Color.DarkOrange), r);
        }

         private  void btnDrawPie_Click( object sender, EventArgs e)
        {
            Graphics g =  this.CreateGraphics();
            Rectangle r =  new Rectangle( 10,  10,  200,  100);
            Pen pen1 =  new Pen(Color.Black);
             // 椭圆
            g.DrawPie(pen1,  50,  50,  200,  200,  225,  90);   // 起始坐标(50,50),宽度200,高度200,射线1=225,射线2=90 
            g.DrawPie(pen1, r,  225,  90);
             // 填充椭圆
            g.FillPie( new SolidBrush(Color.Blue),  50,  50,  200,  200,  225,  90);
            g.FillPie( new SolidBrush(Color.DarkOrange), r,  225,  90);
        }
    }
}