欢迎来到天天文库
浏览记录
ID:39436743
大小:212.34 KB
页数:26页
时间:2019-07-03
《《吉林大学远程教育》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、吉林大学远程教育课件WindowsAPI编程主讲人:翟慧杰学时:48习题1四、Windows绘图程序设计图形设备接口(GDI:GraphicsDeviceInterface)是Windows的子系统,它负责在视频显示器和打印机上显示图形。正如您所认为的那样,GDI是Windows非常重要的部分。不但您为Windows编写的应用系统在显示视觉信息时只使用GDI,就连Windows本身也只使用GDI来显示用户界面对象,诸如菜单、滚动条、图标和鼠标光标。从程序员的观点来看,GDI由几百个函数调用和一些相关的数据类型、宏和结构组成。但是在开始讲述这些函数的细节之
2、前,让我们先从宏观上了解一下GDI的整体结构。组成GDI的几百个函数调用可以分为几大类:获取《或创建》和释放(或清除)设备描述表的函数在绘图时需要设备描述表句柄。GetDC和RealseDC函数让您在非WM_PAINT的消息期间来做到这一点,而BeginPaint和EndPaint函数(虽然在技术上它们是USER模块而不是GDI模块的一部分)在进行绘图的WM_PAINT消息期间使用。获取有关设备描述表信息的函数GetTextMetrics函数来获取有关设备描述表中当前所选字体的尺寸信息。绘图函数显然,在所有前提条件都得以满足之后,这些函数是真正重要的部分
3、。我们使用TextOut函数在窗口的客户区显示一些文本。我们将看到,其他GDI函数还可以让您画线、填充区域。在屏幕或打印机上显示的图形类型本身可以被分为几类,通常被称为“图元”,它们是:直线和曲线线条是所有矢量图形绘制系统的基础。GDI支持直线、矩形、椭(包括椭圆的子集,也就是我们所说的“圆”)、椭圆圆周上的部分曲线即所谓“弧”,以及贝塞尔曲线,我们将在本章中分别对它们进行介绍。所有更复杂的曲线可由折线(polyline)代替,折线通过一组非常短的直线来定义一条曲线。线条用设备描述表中选中的当前画笔绘制。窗体客户区绘图步骤:1.获取设备环境句柄2.获取绘
4、图工具3.选择绘图工具4.利用选择的绘图工具绘图5.恢复原来的绘图工具并删除选择的绘图工具6.释放设备环境句柄WINDOWSGDI函数:1.GetDC()函数功能:用于获取指定窗体客户区的显示器设备描述表句柄。2.ReleaseDC()函数功能:用于释放设备描述表句柄。3.BeginPaint()函数功能:用于获取窗体客户区绘图的相关信息,并为绘图做好准备。4.EndPaint()函数功能:用于结束窗体客户区绘图。5.SetPixel()函数功能:用于在窗体客户区绘制点(像素)。6、RGB()宏功能:用于设置颜色。7、CreatePen()函数功能:用于
5、建立逻辑笔。8、MoveToEx()函数功能:用于窗体客户区移动逻辑笔。9、LineTo()函数功能:用于在窗体客户区当前位置画线。10、Ellipse()函数功能:用于窗体客户区绘制椭圆。11、SelectObject()函数功能:用于选择一种绘图工具柄将其装入设备描述表。12、DeleteObject()函数功能:用于删除一个绘图工具。13、TextOut()函数功能:用于在窗体客户区输出文本。14、SetBkMode()函数功能:用于设置窗体客户区背景填充方式。15、SetTextColor()函数16、CreateFont()函数其它函数1.Se
6、tTimer()函数功能:用于建立产生时间消息的时间控件。2、KillTimer()函数功能:用于取消时间控件。3、GetClientRect()函数功能:用于获取窗体客户区范围。画点和线:我们已谈论过Windows图形设备接口将图形输出设备的设备驱动程序与计算机连在一起的方式。在理论上,只要提供SetPixel和GetPixel函数,就可以使用图形设备驱动程序绘制一切东西了。其余的一切都可以使用GDI模块中实现的更高级的例程来处理。例如画线时,只需GDI调用SetPixel数次,并适当地调整X和Y坐标。在实际情况中,也的确可以仅使用SetPixel和G
7、etPixel函数进行您需要的任何绘制。您也可以在这些函数的基础上设计出简洁和构造良好的图形编程系统。唯一的问题是性能。如果一个函数通过几次调用才能到达SetPixel函数,那么它运行起来会非常慢。如果一个图形系统画线和进行其他复杂的图形操作是在设备驱动程序的层次上,它就会更有效得多,因为设备驱动程序对完成这些操作的代码进行了优化。此外,一些视频适配器卡包含了图形协处理器,它允许视频硬件自己绘制图形。五文本和字体:文本输出是应用程序经常需要实现的功能。许多程序的运行结果都必须以文本输出形式显示;文字处理程序更是主要以文本作为处理的对象。所以,程序员掌握文
8、本输出的基本原理和技术具有重要的意义。文本输出需要解决的问题是如何修改显示文本的
此文档下载收益归作者所有