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对象,

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(粗细)等.
创建简单的画笔  
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 :基于编程者定义的唯一路径,使用复杂的混合色渐变进行绘制
LinearGradientBrush 类的命名空间为  System.Drawing.Drawing2D
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);       //(纹理刷)
 
posted @   玉子冲啊啊  阅读(506)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示