欢迎来到天天文库
浏览记录
ID:37906135
大小:160.50 KB
页数:12页
时间:2019-06-02
《Windows Api教案3》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、教案用纸第四章图形基础一概述图形设备接口(GDI:GraphicsDeviceInterface)是Windows的子系统,它负责在视频显示器和打印机上显示图形。二GDI的结构⒈GDI原理Window98和WindowsNT中的图形主要由GDI32.DLL动态链接库输出的函数来处理。在Window98中,这个GDI32.DLL实际是利用16位GDI.EXE动态链接库来执行许多函数。在WindowsNT中,GDI.EXE只用于16位的程序。这些动态链接库为用户安装的视频显示器和任何打印机调用设备驱动程序中的例程。视频驱动程序访问视频显示器的硬件,打印机驱动程
2、序将GDI命令转换为各种打印机能够理解的代码或命令。GDI的主要目的之一是支持与设备无关的图形。GDI是图形设备硬件之间的一种高层接口。图形输出设备分为光栅设备和矢量设备两大类。⒉GDI函数分类◆获取(或创建)和释放(或清除)DC的函数;如,GetDC和ReleaseDC函数等◆获取有关DC信息的函数;如,GetTextMetrics函数来获取有关DC中当前所选字体的尺寸信息。◆绘图函数;如,TextOut等;◆设置和获取DC参数的函数;DC的“属性”决定有关绘图函数如何工作的细节。如,SetTextColor◆使用GDI对象的函数;如,Brush,Pen
3、和Bitmap等,用SelectObject函数来选择。⒊GDI图元在屏幕或打印机上显示的图形类型本身可以被分为几类,通常被称为“图元”,他们是:◆直线和曲线线条是所有矢量图形绘制系统的基础。GDI支持直线、矩形、椭圆、弧,以及贝塞尔曲线。所有更复杂的曲线可由折线代替。◆填充区域当一系列直线或者曲线封闭了一个区域时,该区域可以使用当前GDI画刷对象进行填充。这个画刷可以是实心色彩、图案,也可以是在区域内垂直或者水平重复的位图图像。◆位图第53页吉林化工学院教案用纸位图是位的矩形数组,这些位对应于显示设备上的像素,它们是光栅图形的基础工具。位图通常用于在视频
4、显示器或者打印机上显示复杂图像。位图还可以用于显示必须很快绘制的小图像,诸如图标、鼠标光标等。GDI支持两种类型的位图:老的“设备有关”位图,是GDI对象;新的“设备无关”位图,可以存储在磁盘文件中。◆文本文本通常不仅是所有的计算机图形系统中最复杂的部分,而且也是最重要的部分。Windows98不仅支持TrueType字体,而且继续支持旧时的基于位图的字体。⒋其他方面◆映射模式和变换虽然默认时以像素为单位进行绘图,但是并非局限于此。GDI映射模式允许用户以英寸、mm或者任何用户想使用的单位来绘图,但Windows98不支持坐标变换。◆元文件元文件是以二进制
5、形式存储的GDI命令的集合。元文件主要用于通过剪贴板传输矢量图形表示。◆区域区域是形状任意的复杂区,通常定义为较简单区域的布尔组合。在GDI内部,区域除了存储为最初用来定义区域的线条组合以外,还以一系列扫描线的形式存储。用户可以将区域用于绘制轮廓、填充和剪裁。◆路径路径是GDI内部存储的直线和曲线的集合。路径可以用于绘图、填充和剪裁,还可以转换为区域。◆剪裁绘图可以限制在客户区的某一部分中。剪裁区域可以是矩形或非矩形,剪裁通常是通过区域或者路径来定义的。◆调色板定制调色板通常限于显示256色的显示器。Windows仅保留这些色彩之中的20种供系统使用,用户
6、可以改变其他236种色彩,以准确显示按位图形式存储的真实图像。。◆打印三设备描述表⒈获取DC句柄方法一:HDChdc;PAINTSTRUCTps;第53页吉林化工学院教案用纸hdc=BeginPaint(hwnd,&ps);……EndPaint(hwnd,&ps);方法二:hdc=GetDC(hwnd);……ReleaseDC(hwnd,hdc);方法三:hdc=GetWindowDC(hwnd);……ReleaseDC(hwnd,hdc);方法四:hdc=CreateDC(TEXT(“DISPLAY”),NULL,NULL,NULL);通过方法四可以获取
7、整个屏幕的DC句柄。特例一:有时用户只是需要获取关于DC的一些信息而并不进行任何绘画,这时,可以使用CreateIC来获取一个“信息描述表”的句柄,其参数与CreateDC函数相同,如:hdc=CreateDC(TEXT(“DISPLAY”),NULL,NULL,NULL);⒉获取DC信息GetDeviceCaps函数:intGetDeviceCaps(HDChdc,//handletothedevicecontextintnIndex//indexofcapabilitytoquery);通过该函数可以获取指定设备的信息。如:iValue=GetDevi
8、ceCaps(hdc,HORZRES);可得到设备的宽度(单位为像
此文档下载收益归作者所有