C# GDI
GDI,全称Graphics Device Interface,含义是图形设备接口,主要任务就是负责系统与绘图程序之间的信息交换。
GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理二维(2D的图形和图像,使用DirectX处理维(3D的图形图像,图形图像处理用到的主要命名空间是System . Drawing:提供了对GDI+基本图形功能的访问,主要Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等.
1.Graphics类
一个是Graphics对象,该对象封装了一个绘图图面,Graphics对象的创建一般是用控件自带的CreateGraphics()方法得到该对象,
还可以用控件的Paint或者重写窗体的OnPaint事件里面有一个PaintEventArgs e的参数,用e.Graphics获取Graphics对象,
还可以用控件的Paint或者重写窗体的OnPaint事件里面有一个PaintEventArgs e的参数,用e.Graphics获取Graphics对象,
2.Bitmap类
System.Drawing;命名空间所提供
Bitmap bitmap = new Bitmap(this.Width, this.Height);
Graphics gra = Graphics.FromImage(bitmap); 创建。这个对象是画图必须的
3. Pen类,提供了画笔
Pen的属性主要有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细)等.
创建简单的画笔
3. Pen类,提供了画笔
Pen的属性主要有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细)等.
创建简单的画笔
Pen p=Pens.Red;
例如:Pen p = new Pen(Color.Red,5);//画笔颜色,画笔宽度。
Graphics g = this.CreateGraphics();
//画虚线
p.DashStyle = DashStyle.Dot;//定义虚线的样式为点
//自定义虚线
p.DashPattern = new float[] { 2, 2 };//设置短划线和空白部分的数组
//画箭头,只对不封闭曲线有用
p.DashStyle = DashStyle.Solid;//恢复实线
p.EndCap = LineCap.ArrowAnchor;//定义线尾的样式为箭头
4 Brush对象,该对象是画刷
作用:我们可以用画刷填充各种图形形状,如矩形、椭圆、扇形、多边形和封闭路径等,主要有几种不同类型的画刷:
- • SolidBrush:画刷最简单的形式,用纯色进行绘制
- • HatchBrush:类似于 SolidBrush,但是可以利用该类从大量预设的图案中选择绘制时要使用的图案,而不是纯色
- • TextureBrush:使用纹理(如图像)进行绘制
- • LinearGradientBrush:使用沿渐变混合的两种颜色进行绘制
- • PathGradientBrush :基于编程者定义的唯一路径,使用复杂的混合色渐变进行绘制
Rectangle myrect1 = new Rectangle(20, 80, 250, 100);
// (实心刷)
SolidBrush mysbrush1 = new SolidBrush(Color.DarkOrchid);
//(梯度刷)
LinearGradientBrush mylbrush5 = new LinearGradientBrush(rect1,
Color.DarkOrange, Color.Aquamarine,
LinearGradientMode.BackwardDiagonal);
//(阴影刷)
HatchBrush myhbrush5 = new HatchBrush(HatchStyle.DiagonalCross,
Color.DarkOrange, Color.Aquamarine);
//(纹理刷)
TextureBrush textureBrush = new TextureBrush(new Bitmap(@"d:\1.jpg"));
e.Graphics.FillRectangle(mysbrush1, rect1); // (实心刷)
e.Graphics.FillRectangle(mylbrush1, rect1); //(梯度刷)
e.Graphics.FillRectangle(myhbrush1, rect1); //(阴影刷)
e.Graphics.FillRectangle(mytextureBrush, rect1); //(纹理刷)
SolidBrush mysbrush1 = new SolidBrush(Color.DarkOrchid);
//(梯度刷)
LinearGradientBrush mylbrush5 = new LinearGradientBrush(rect1,
Color.DarkOrange, Color.Aquamarine,
LinearGradientMode.BackwardDiagonal);
//(阴影刷)
HatchBrush myhbrush5 = new HatchBrush(HatchStyle.DiagonalCross,
Color.DarkOrange, Color.Aquamarine);
//(纹理刷)
TextureBrush textureBrush = new TextureBrush(new Bitmap(@"d:\1.jpg"));
e.Graphics.FillRectangle(mysbrush1, rect1); // (实心刷)
e.Graphics.FillRectangle(mylbrush1, rect1); //(梯度刷)
e.Graphics.FillRectangle(myhbrush1, rect1); //(阴影刷)
e.Graphics.FillRectangle(mytextureBrush, rect1); //(纹理刷)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!