绘图相关的命名空间
System. Drawing:提供最基本的绘图功能(直线,椭圆等);
System. Drawing. Drawing2D;提供高级二维和矢量绘图功能(渐变、图片填充、轨迹等)。
System. Drawing .Imaging;命名空间提供图像处理功能;
System. Drawing. Text;命名空间提供排版功能;
System. Drawing. Printing;提供打印相关的服务;
像素和坐标系
构成图像的最小单位:像素。
坐标数不存在负数(Y轴向下也是正数);
颜色:
画图:
****Graphics ****对象表示 GDI+ 绘图表面,并且该对象是用于创建图形图像的对象。
只要画图,就需要定义Graphics对象。
创建一个用于画图的对象
Graphics g = this.CreateGraphics();
创建一个笔:两个参数(颜色,笔画粗细)
Pen pen = new Pen(Color.Red, 5);
设置划线起点和终点坐标
Point startPoint = new Point(50,50); Point endPoint = new Point(400, 400);
画线
g.DrawLine(pen,startPoint, endPoint);
释放画线动作
g.Dispose();
释放笔
pen.Dispose();
实例:
/** * 画图按钮 */ private void huatu_Click(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); // 创建一个笔 Pen pen = new Pen(Color.Red, 5); // 设置划线起点和终点坐标 Point startPoint = new Point(50,50); Point endPoint = new Point(400, 400); // 画线 g.DrawLine(pen,startPoint, endPoint); // 释放画线动作 g.Dispose(); // 释放笔 pen.Dispose(); }
清除刚刚绘制的图像
Clear参数(将窗体背景清除成什么颜色);
/** * 清空按钮 */ private void qingchu_Click(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); // 清除图像(参数:窗体背景颜色) g.Clear(BackColor); }
Brush画刷的四个派生类
只要画图,就需要定义Graphics对象。
绘制椭圆:其实和画直线是一样的。都是确定两个点。
结合之前学过的委托,做了个画椭圆的小程序:
效果如下
测试使用全部代码:
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System. Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace huitu { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /** * 画图按钮 */ private void huatu_Click(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); // 创建一个笔 Pen pen = new Pen(Color.Red, 5); // 设置划线起点和终点坐标 Point startPoint = new Point(50,50); Point endPoint = new Point(400, 400); // 画线 g.DrawLine(pen,startPoint, endPoint); // 释放画线动作 g.Dispose(); // 释放笔 pen.Dispose(); } /** * 清空按钮 */ private void qingchu_Click(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); // 清除图像(参数:窗体背景颜色) g.Clear(BackColor); } // 定义委托 public delegate void drawsss(object sender, EventArgs e); public static void runPlay(drawsss dong, object sender, EventArgs e) { dong(sender,e); } /** * 画椭圆 */ private void tuoyuan_Click(object sender, EventArgs e) { // 创建一个用于画图的对象 //Graphics g = this.CreateGraphics(); // 定义画刷 //SolidBrush brush = new SolidBrush(Color.Gray); // 画椭圆需要5个参数 //g.FillEllipse(brush, 10, 10, 500, 200); // 释放画线动作 //g.Dispose(); // 释放笔 //brush.Dispose(); // (多播委托) drawsss anm_one = new drawsss(shixin_CheckedChanged); anm_one += wenli_CheckedChanged; anm_one += jianbian_CheckedChanged; anm_one += yinying_CheckedChanged; } // 定义一个画刷 //private Brush brush = new SolidBrush(Color.Gray); // 画实心 private void shixin_CheckedChanged(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); SolidBrush brush = new SolidBrush(Color.Gold); // 画椭圆需要5个参数 g.FillEllipse(brush, 10, 10, 500, 200); } //画纹理 private void wenli_CheckedChanged(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); TextureBrush brush = new TextureBrush(imageList1.Images[0]); // 画椭圆需要5个参数 g.FillEllipse(brush, 10, 10, 500, 200); } // 画渐变(从一种颜色变道另一种颜色) private void jianbian_CheckedChanged(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); // 设置划线起点和终点坐标 Point startPoint = new Point(200, 200); Point endPoint = new Point(800, 800); LinearGradientBrush brush = new LinearGradientBrush(startPoint, endPoint, Color.HotPink, Color.LightBlue); // 画椭圆需要5个参数 g.FillEllipse(brush, 10, 10, 500, 200); } private void yinying_CheckedChanged(object sender, EventArgs e) { // 创建一个用于画图的对象 Graphics g = this.CreateGraphics(); HatchBrush brush = new HatchBrush(HatchStyle.DashedDownwardDiagonal, Color.SeaShell, Color.Thistle); // 画椭圆需要5个参数 g.FillEllipse(brush, 10, 10, 500, 200); } } }







