《图形图像编程》PPT课件.ppt
《《图形图像编程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《图形图像编程》PPT课件.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1伊犁师范学院物电学院伊犁师范学院物电学院 王平王平第五章第五章 图图形形图图像像编编程程 本章的目的是学习使用本章的目的是学习使用GDI+的图形图像编程方的图形图像编程方法,希望在学习本章以后,能编制像法,希望在学习本章以后,能编制像Windows画图画图那样的程序。本章的重点是学习创建画笔、画刷等那样的程序。本章的重点是学习创建画笔、画刷等绘图工具,学习使用绘图工具,学习使用Graphics类的绘图函数绘制各类的绘图函数绘制各种图形,学习利用种图形,学习利用Bitmap类处理图形和图像,最类处理图形和图像,最后简单介绍多媒体和后简单介绍多媒体和3D图形程序设计的基础知识。图形程序设计的基础
2、知识。2伊犁师范学院物电学院伊犁师范学院物电学院 王平王平5.1 5.1 GDI+(图形设备环境接口图形设备环境接口)GDI+是是2D(2维维)图形库,它允许程序员用库中的函数编写图形库,它允许程序员用库中的函数编写与显视器、打印机和文件等图形设备进行交互的与显视器、打印机和文件等图形设备进行交互的Windows和和Web应用程序应用程序,可以在这些设备上输出字符和可以在这些设备上输出字符和2D图形。图形。Windows和和Web应用程序应用程序根据是在根据是在CRT显示还是在打印机显示还是在打印机打印,首先生成显示设备环境或打印设备环境,然后调用打印,首先生成显示设备环境或打印设备环境,然后
3、调用不同设备环境中的同名函数实现在不同设备环境中的同名函数实现在显视器显视器显示或在打印机显示或在打印机上打印。而设备环境根据选择的不同设备,调用各个设备上打印。而设备环境根据选择的不同设备,调用各个设备制造厂商提供的设备驱动程序,在制造厂商提供的设备驱动程序,在显视器显视器上显示或在打印上显示或在打印机上打印。这些工作都是由机上打印。这些工作都是由GDI+完成的。这样做的最大好完成的。这样做的最大好处是应用程序和设备无关,应用程序不必为不同的设备编处是应用程序和设备无关,应用程序不必为不同的设备编制不同的程序。无论是不同的显卡,还是不同的打印机,制不同的程序。无论是不同的显卡,还是不同的打印
4、机,只要安装该设备的驱动程序,应用程序就可以使用该设备只要安装该设备的驱动程序,应用程序就可以使用该设备了,微软的了,微软的Word程序可以使用不同的打印机就是使用了这程序可以使用不同的打印机就是使用了这个原理。设备环境所扮演的角色如图所示。个原理。设备环境所扮演的角色如图所示。3伊犁师范学院物电学院伊犁师范学院物电学院 王平王平CRT显示打印机打印CRT驱动程序打印机驱动程序(GDI+)设备环境应用程序4伊犁师范学院物电学院伊犁师范学院物电学院 王平王平GDI+GDI+是是对对WindowsWindows操作系统操作系统GDIGDI函数库函数库(GDI32.DLL)(GDI32.DLL)的扩
5、充,并用的扩充,并用C+C+类进行了封装,类进行了封装,GDI+GDI+提供了比提供了比GDIGDI更强大的功能。更强大的功能。WindowsXPWindowsXP及以后版本支持及以后版本支持GDI+GDI+,以前版本以前版本WindowsWindows操作系统要使用操作系统要使用GDI+GDI+,必须复制,必须复制Gdiplus.dllGdiplus.dll到系统目录。到系统目录。GDI+GDI+支持受控代码和非支持受控代码和非受控代码。受控代码。5伊犁师范学院物电学院伊犁师范学院物电学院 王平王平5.2 Graphics类类 GraphicsGraphics类提供一些方法绘制各种图形。类提
6、供一些方法绘制各种图形。GraphicsGraphics类是类是密封类,不能有派生密封类,不能有派生类。类。6伊犁师范学院物电学院伊犁师范学院物电学院 王平王平5.2.1 使用使用Graphics类绘图的基本步骤类绘图的基本步骤 GDI+GDI+类提供了一些绘图工具,例如提供笔用来定义图形外轮廓类提供了一些绘图工具,例如提供笔用来定义图形外轮廓线的颜色及粗细,提供刷子定义添充封闭图形内部的颜色和格线的颜色及粗细,提供刷子定义添充封闭图形内部的颜色和格式,提供不同输出字体。式,提供不同输出字体。GraphicsGraphics类中类中提供绘图函数使用提供绘图函数使用GDI+GDI+类中提供的绘图
7、工具来输出字符或绘制图形。类中提供的绘图工具来输出字符或绘制图形。GDI+GDI+默认绘图坐默认绘图坐标以标以窗体用户区左上角为原点,窗体用户区左上角为原点,x x轴向右为正方向,轴向右为正方向,y y轴向下为轴向下为正方向,单位为像素。正方向,单位为像素。GDI+GDI+定义了三种坐标系统,并提供了三定义了三种坐标系统,并提供了三种坐标转换的方法种坐标转换的方法Graphics.TransformPoints()Graphics.TransformPoints()。在不同的控。在不同的控件或设备上绘制图形方法有很大不同,为了在不同的控件或设件或设备上绘制图形方法有很大不同,为了在不同的控件或
8、设备上用完全相同的代码完成相同的图形,绘图前应首先建立或备上用完全相同的代码完成相同的图形,绘图前应首先建立或得到相应控件或设备关联的得到相应控件或设备关联的GraphicsGraphics类对象。类对象。下面的例子,在下面的例子,在窗体中增加了一个按钮,单击按钮将在窗体中画一个边界为红窗体中增加了一个按钮,单击按钮将在窗体中画一个边界为红色,内部填充为蓝色的圆。该程序段说明了使用色,内部填充为蓝色的圆。该程序段说明了使用GraphicsGraphics类绘类绘图的基本步骤。按钮的单击事件处理函数如下:图的基本步骤。按钮的单击事件处理函数如下:7伊犁师范学院物电学院伊犁师范学院物电学院 王平王
9、平绘绘制制矩矩形形定定义义的的园园或或椭椭圆圆,矩矩形形左左上上角角坐坐标标为为(10,10),(10,10),宽宽和和高高各各为为100100个像素单位。个像素单位。private void button1_Click(object sender,EventArgs e)private void button1_Click(object sender,EventArgs e)/得到窗体使用的得到窗体使用的GraphicsGraphics类对象方法类对象方法1 1 Graphics g=this.CreateGraphics();Graphics g=this.CreateGraphics()
10、;/创建红色的笔对象创建红色的笔对象 Pen pen1=new Pen(Color.Red);Pen pen1=new Pen(Color.Red);/创建蓝色的刷子对象创建蓝色的刷子对象 SolidBrush brush1=new SolidBrush(Color.Blue);SolidBrush brush1=new SolidBrush(Color.Blue);/用红色笔在窗体中画矩形内切圆的边界用红色笔在窗体中画矩形内切圆的边界 g.DrawEllipse(pen1,10,10,100,100);g.DrawEllipse(pen1,10,10,100,100);/用蓝色刷子填充矩形内
11、切圆的内部用蓝色刷子填充矩形内切圆的内部 g.FillEllipse(brush1,10,10,100,100);g.FillEllipse(brush1,10,10,100,100);8伊犁师范学院物电学院伊犁师范学院物电学院 王平王平5.2.2 窗体的窗体的Paint事件事件 运行上例,单击按钮,出现边界为红色,内部填充为运行上例,单击按钮,出现边界为红色,内部填充为蓝色的圆。最小化后再最大化,图形消失。这是因为蓝色的圆。最小化后再最大化,图形消失。这是因为当发生窗体最小化后再最大化、菜单被打开再关闭或当发生窗体最小化后再最大化、菜单被打开再关闭或打开对话框再关闭等情况,用户区内容可能被破
12、坏。打开对话框再关闭等情况,用户区内容可能被破坏。操作系统不保存被破坏的用户区内容,而是由应用程操作系统不保存被破坏的用户区内容,而是由应用程序自己恢复被破坏的用户区内容。当应用程序窗口用序自己恢复被破坏的用户区内容。当应用程序窗口用户区内容被破坏后需恢复时,户区内容被破坏后需恢复时,WindowsWindows操作系统向应操作系统向应用程序发送用程序发送PaintPaint事件,应用程序应把在窗口用户区事件,应用程序应把在窗口用户区输出数据的语句放在输出数据的语句放在PaintPaint事件处理函数中,应用程事件处理函数中,应用程序响应序响应PaintPaint事件,能在事件处理函数中调用这
13、些在事件,能在事件处理函数中调用这些在窗口用户区输出数据的语句恢复被破坏的内容。窗口用户区输出数据的语句恢复被破坏的内容。FormForm类窗体不能自动响应类窗体不能自动响应PaintPaint事件,程序员必须生成事件,程序员必须生成PaintPaint事件处理函数。修改上例,在事件处理函数。修改上例,在Form1Form1类中增加类中增加PaintPaint事件处理函数如下:事件处理函数如下:9伊犁师范学院物电学院伊犁师范学院物电学院 王平王平private void Form1_Paint(object sender,PaintEventArgs e)private void Form1_
14、Paint(object sender,PaintEventArgs e)/得到窗体的使用的得到窗体的使用的GraphicsGraphics类对象方法类对象方法2 2,方法,方法3 3见节见节 Graphics g=e.Graphics;Graphics g=e.Graphics;Pen pen1=new Pen(Color.Red);Pen pen1=new Pen(Color.Red);SolidBrush brush1=new SolidBrush(Color.Blue);SolidBrush brush1=new SolidBrush(Color.Blue);g.DrawEllipse
15、(pen1,10,10,100,100);g.DrawEllipse(pen1,10,10,100,100);g.FillEllipse(brush1,10,10,100,100);g.FillEllipse(brush1,10,10,100,100);运行后,出现边界为红色,内部填充蓝色的圆。最小化后,再最运行后,出现边界为红色,内部填充蓝色的圆。最小化后,再最大化,图形不消失。大化,图形不消失。10伊犁师范学院物电学院伊犁师范学院物电学院 王平王平5.3 GDI+中常用的结构中常用的结构 本本节节介介绍绍GDI+GDI+中中常常用用的的结结构构,包包括括:PointPoint、PointF
16、PointF、SizeSize、SizeFSizeF、RectangleRectangle、RectangleFRectangleF、ColorColor等等。它们是在命名空间它们是在命名空间System.DrawingSystem.Drawing中定义的。中定义的。点点结结构构PointPoint和和PointFPointF定定义义点点的的位位置置。点点结结构构有有两两个个成成员员:X X,Y Y,表表示示点点的的x x轴轴和和y y轴轴的的坐坐标标。其其常常用用构构造造函数如下:函数如下:Point p1=new Point(int X,int Y);/Point p1=new Point
17、(int X,int Y);/X,YX,Y为整数为整数PointF p2=new PointF(float X,floa Y);PointF p2=new PointF(float X,floa Y);/X,Y/X,Y为浮点数为浮点数 11伊犁师范学院物电学院伊犁师范学院物电学院 王平王平结结构构SizeSize和和SizeFSizeF用用来来描描述述对对象象宽宽和和高高,有有成成员员WidthWidth和和HeightHeight。常用构造函数如下:。常用构造函数如下:/坐标系统可以转换,坐标单位可以不是点距坐标系统可以转换,坐标单位可以不是点距Size(int width,int heig
18、ht);Size(int width,int height);/float/float类型是为了支持坐标不是点距的单位类型是为了支持坐标不是点距的单位/(/(例如单位为例如单位为mm)mm)SizeF(float width,float height);SizeF(float width,float height);12伊犁师范学院物电学院伊犁师范学院物电学院 王平王平矩形结构矩形结构RectangleRectangle和和RectangleFRectangleF用来描述一个矩形,用来描述一个矩形,其常用属性和方法如下:其常用属性和方法如下:属性属性X X、Y Y和只读属性和只读属性LeftL
19、eft、TopTop:只读属性只读属性RightRight和和BottomBottom:属性属性WidthWidth、HeightHeight和只读属性和只读属性SizeSize:构造函数构造函数Rectangle(Point location,Size size)Rectangle(Point location,Size size):构造函数构造函数Rectangle(int X,int Y,int width,int Rectangle(int X,int Y,int width,int height)height):13伊犁师范学院物电学院伊犁师范学院物电学院 王平王平 Color Co
20、lor结构用来描述颜色。任何一种颜色可以用透明结构用来描述颜色。任何一种颜色可以用透明度度(alphaalpha),蓝色,蓝色(bb)(bb),绿色,绿色(gg)(gg),红色,红色(rr)(rr)合成,合成,1616进制数格式为进制数格式为0 xalrrbbgg0 xalrrbbgg,其中,其中al,bb,gg,rral,bb,gg,rr为为2 2位位1616进制数进制数(0-255)(0-255),用这个无符号,用这个无符号3232位数代表颜色。位数代表颜色。ColorColor结构常用方法如下:结构常用方法如下:public static Color FromArgbpublic sta
21、tic Color FromArgb(int alpha,int rr,int gg,int bb)(int alpha,int rr,int gg,int bb):public static Color FromArgbpublic static Color FromArgb(int rr,int gg,int bb)(int rr,int gg,int bb):public static Color FromArgbpublic static Color FromArgb(int alpha,Color color)(int alpha,Color color):【例例5.15.1】本例本
22、例创创建建3 3个半透明的个半透明的红红、绿绿、蓝蓝刷子,填刷子,填充充3 3个矩形,个矩形,请请注意例子中透明度及注意例子中透明度及颜颜色使用的方法。色使用的方法。14伊犁师范学院物电学院伊犁师范学院物电学院 王平王平private void Form1_Paintprivate void Form1_Paint(object sender,PaintEventArgs e)(object sender,PaintEventArgs e)Graphics g=e.Graphics;Graphics g=e.Graphics;SolidBrush RedBrush=new SolidBrush
23、 SolidBrush RedBrush=new SolidBrush(Color.FromArgb(128,255,0,0);(Color.FromArgb(128,255,0,0);/半透明半透明SolidBrush GreenBrush=new SolidBrush GreenBrush=new SolidBrush(Color.FromArgb(128,0,255,0);SolidBrush(Color.FromArgb(128,0,255,0);SolidBrush BlueBrush=newSolidBrush BlueBrush=new SolidBrush(Color.From
24、Argb(128,0,0,255);SolidBrush(Color.FromArgb(128,0,0,255);g.FillRectangle(RedBrush,0,0,80,80);g.FillRectangle(RedBrush,0,0,80,80);g.FillRectangle(GreenBrush,40,0,80,80);g.FillRectangle(GreenBrush,40,0,80,80);g.FillRectangle(BlueBrush,20,20,80,80);g.FillRectangle(BlueBrush,20,20,80,80);15伊犁师范学院物电学院伊犁师
25、范学院物电学院 王平王平效果如图,可以将透明度效果如图,可以将透明度alphaalpha值设为值设为255255,再运行一次,再运行一次,看看看看有何不同。有何不同。C#C#中还预定义了一些颜色常数,例如黑色为中还预定义了一些颜色常数,例如黑色为Color.BlackColor.Black,红色为,红色为Color.RedColor.Red等等,等等,请用请用VS2005VS2005帮助系统查帮助系统查看看。16伊犁师范学院物电学院伊犁师范学院物电学院 王平王平5.4 5.4 画笔画笔Pen类类 PenPen类对象指定绘制图形的外轮廓线宽度和颜色。类对象指定绘制图形的外轮廓线宽度和颜色。Pen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形图像编程 图形图像 编程 PPT 课件
限制150内