【概念】
GDI+是Graphics Device Interface Plus的缩写,称为图像设备接口,作用就是负责系统与绘图程序之间的信息交换,处理所有的Windows程序的图形输出。说到这你是否明白一点了那,通俗的讲,平常经常用的windows操作系统下,具备图形界面的应用程序都用到了GDI+,就比如编程用到的Visual Studio中就用到了GDI+,当你新建一个类型为Windows窗体应用程序的项目时,会出现一个窗体,该窗体就是利用GDI+提供的众多函数画出来的,所以在代码窗体的命名空间里有Using System.Drawing.
【内容】
要想画图,必须具备的工具有笔,画板,画画的主体(生活中通常就是人)
一:坐标Point
1.画图时首先要考虑在哪画,即要有一个坐标系。GDI+的坐标是往右往下递增,而平常的二维坐标是往右往上递增。坐标是一个有序对
2.结构体
Point pt=new Point(10,10); //即定义一个点
二:画笔Pen
1.作用:主要指定画笔的颜色和宽度
2.创建画笔:
Pen p=new Pen(color.blue,3); //即创建一个蓝色的画笔,像素为3,如果不指定像素,默认为1
3.作用:画一个图形的轮廓
三:Graphics类
1.采用面向对象的封装机制,提供将对象(图形或文本)绘制到设备上(打印机、屏幕等),这些对象对立与Graphics对象,是它方法的参数
2.创建Graphics对象方法
如果是从已创建的窗体或控件上画,可以用Graphics g=this.CreatGraphics();
否则(比如要在一个图像上画,),可用Graphics g=Graphics.FromImage(bm); //bm即画的载体的名称(要在哪画)
如果在Paint的事件中创建,可用PaintEventArgs事件,Graphics g=e.Graphics;
3.常用方法
画图:g.DrawLine();
画文本:g.DrawStrign();
填充图形:g.FillRectangle();注意,填充时是在相对坐标的(0,0)处开始的,所以会把图形的左上边覆盖
四:Rectangle和RectangleF区别
其实和size和sizeF,Point和PointF的区别相同,就是它们各自的结构体代表浮点数类型(其中的属性可以写成int类型,float类型的数要在数值后面加f,否则默认为Double类型给你,此时会报错),那么问题来了,在画图时,没有DrawRecTangleF()方法,还是要把RecTangleF转换成RecTangle,转换方法有如下两种:
1.Rount:讲Float舍入到最近的整数值
SizeF size = new SizeF(100, 150); //矩形的大小 RectangleF rec = new RectangleF(new PointF(20.3f, 20.9f), size); Rectangle re = Rectangle.Round(rec);
2.TrunCate:阶段RecTangleF值,即float值
SizeF size = new SizeF(100, 150); //矩形的大小 RectangleF rec = new RectangleF(new PointF(20.3f, 20.9f), size); Rectangle re = Rectangle.Truncate(rec);
五:brush画刷
1.作用:用来填充闭合图形的颜色
2.类型:brush和solidbrush(实心画刷)
3.区别:创建一个实行画刷需要实例化:SolidBrush b = new SolidBrush(Color.Red);而brushs类不需要实 例化
六:paint重画
当在窗体中画完一个图形首,使窗体最下话后,发现原来画的图形没有了,如果图形是在Form的paint事件中画的,就不会出现这种情况。
【总结】
GDI+提供的方法可以方便程序员在屏幕、打印机及其它输出设备上输出图形,文本等操作,程序员无需关心硬件设备及设备驱动,就可以应用程序的输出转化为硬件设备的输出,实现了程序开发者与硬件设备的隔离,方便了开发工作。