第5章图形图像编程

第5章图形图像编程

ID:40119488

大小:337.50 KB

页数:74页

时间:2019-07-21

第5章图形图像编程_第1页
第5章图形图像编程_第2页
第5章图形图像编程_第3页
第5章图形图像编程_第4页
第5章图形图像编程_第5页
资源描述:

《第5章图形图像编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第五章图形图像编程本章的目的是学习使用GDI+的图形图像编程方法,希望在学习本章以后,能编制像Windows画图那样的程序。本章的重点是学习创建画笔、画刷等绘图工具,学习使用Graphics类的绘图函数绘制各种图形,学习利用Bitmap类处理图形和图像,最后简单介绍多媒体和3D图形程序设计的基础知识。5.1GDI+(图形设备环境接口)GDI+是2D(2维)图形库,它允许程序员用库中的函数编写与显视器、打印机和文件等图形设备进行交互的Windows和Web应用程序,可以在这些设备上输出字符和2D图形。Windows和Web应用程序根据是在CRT显示还是在打印机打印,首先生成显示设备环境或

2、打印设备环境,然后调用不同设备环境中的同名函数实现在显视器显示或在打印机上打印。而设备环境根据选择的不同设备,调用各个设备制造厂商提供的设备驱动程序,在显视器上显示或在打印机上打印。这些工作都是由GDI+完成的。这样做的最大好处是应用程序和设备无关,应用程序不必为不同的设备编制不同的程序。无论是不同的显卡,还是不同的打印机,只要安装该设备的驱动程序,应用程序就可以使用该设备了,微软的Word程序可以使用不同的打印机就是使用了这个原理。设备环境所扮演的角色如图所示。CRT显示打印机打印CRT驱动程序打印机驱动程序(GDI+)设备环境应用程序GDI+是对Windows操作系统GDI函数库(

3、GDI32.DLL)的扩充,并用C++类进行了封装,GDI+提供了比GDI更强大的功能。WindowsXP及以后版本支持GDI+,以前版本Windows操作系统要使用GDI+,必须复制Gdiplus.dll到系统目录。GDI+支持受控代码和非受控代码。5.2Graphics类Graphics类提供一些方法绘制各种图形。Graphics类是密封类,不能有派生类。5.2.1使用Graphics类绘图的基本步骤GDI+类提供了一些绘图工具,例如提供笔用来定义图形外轮廓线的颜色及粗细,提供刷子定义添充封闭图形内部的颜色和格式,提供不同输出字体。Graphics类中提供绘图函数使用GDI+类中提

4、供的绘图工具来输出字符或绘制图形。GDI+默认绘图坐标以窗体用户区左上角为原点,x轴向右为正方向,y轴向下为正方向,单位为像素。GDI+定义了三种坐标系统,并提供了三种坐标转换的方法Graphics.TransformPoints()。在不同的控件或设备上绘制图形方法有很大不同,为了在不同的控件或设备上用完全相同的代码完成相同的图形,绘图前应首先建立或得到相应控件或设备关联的Graphics类对象。下面的例子,在窗体中增加了一个按钮,单击按钮将在窗体中画一个边界为红色,内部填充为蓝色的圆。该程序段说明了使用Graphics类绘图的基本步骤。按钮的单击事件处理函数如下:绘制矩形定义的园或

5、椭圆,矩形左上角坐标为(10,10),宽和高各为100个像素单位。privatevoidbutton1_Click(objectsender,EventArgse){//得到窗体使用的Graphics类对象方法1Graphicsg=this.CreateGraphics();//创建红色的笔对象Penpen1=newPen(Color.Red);//创建蓝色的刷子对象SolidBrushbrush1=newSolidBrush(Color.Blue);//用红色笔在窗体中画矩形内切圆的边界g.DrawEllipse(pen1,10,10,100,100);//用蓝色刷子填充矩形内切圆的

6、内部g.FillEllipse(brush1,10,10,100,100);}5.2.2窗体的Paint事件运行上例,单击按钮,出现边界为红色,内部填充为蓝色的圆。最小化后再最大化,图形消失。这是因为当发生窗体最小化后再最大化、菜单被打开再关闭或打开对话框再关闭等情况,用户区内容可能被破坏。操作系统不保存被破坏的用户区内容,而是由应用程序自己恢复被破坏的用户区内容。当应用程序窗口用户区内容被破坏后需恢复时,Windows操作系统向应用程序发送Paint事件,应用程序应把在窗口用户区输出数据的语句放在Paint事件处理函数中,应用程序响应Paint事件,能在事件处理函数中调用这些在窗口用

7、户区输出数据的语句恢复被破坏的内容。Form类窗体不能自动响应Paint事件,程序员必须生成Paint事件处理函数。修改上例,在Form1类中增加Paint事件处理函数如下:privatevoidForm1_Paint(objectsender,PaintEventArgse){//得到窗体的使用的Graphics类对象方法2,方法3见5.9.4节Graphicsg=e.Graphics;Penpen1=newPen(Color.Red);So

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。