- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows Api教案3
第四章 图 形 基 础
一 概述
图形设备接口(GDI:Graphics Device Interface)是Windows的子系统,它负责在视频显示器和打印机上显示图形。
二 GDI的结构
⒈ GDI原理
Window 98和Windows NT中的图形主要由GDI32.DLL动态链接库输出的函数来处理。在Window 98中,这个GDI32.DLL实际是利用16位GDI.EXE动态链接库来执行许多函数。在Windows NT中,GDI.EXE只用于16位的程序。这些动态链接库为用户安装的视频显示器和任何打印机调用设备驱动程序中的例程。视频驱动程序访问视频显示器的硬件,打印机驱动程序将GDI命令转换为各种打印机能够理解的代码或命令。GDI的主要目的之一是支持与设备无关的图形。GDI是图形设备硬件之间的一种高层接口。
图形输出设备分为光栅设备和矢量设备两大类。
⒉ GDI函数分类
获取(或创建)和释放(或清除)DC的函数;
如,GetDC和ReleaseDC函数等
获取有关DC信息的函数;
如,GetTextMetrics函数来获取有关DC中当前所选字体的尺寸信息。
绘图函数;
如,TextOut等;
设置和获取DC参数的函数;
DC的“属性”决定有关绘图函数如何工作的细节。如,SetTextColor
使用GDI对象的函数;
如,Brush,Pen和Bitmap等,用SelectObject函数来选择。
⒊ GDI图元
在屏幕或打印机上显示的图形类型本身可以被分为几类,通常被称为“图元”,他们是:
直线和曲线
线条是所有矢量图形绘制系统的基础。GDI支持直线、矩形、椭圆、弧,以及贝塞尔曲线。所有更复杂的曲线可由折线代替。
填充区域
当一系列直线或者曲线封闭了一个区域时,该区域可以使用当前GDI画刷对象进行填充。这个画刷可以是实心色彩、图案,也可以是在区域内垂直或者水平重复的位图图像。
位图
位图是位的矩形数组,这些位对应于显示设备上的像素,它们是光栅图形的基础工具。位图通常用于在视频显示器或者打印机上显示复杂图像。位图还可以用于显示必须很快绘制的小图像,诸如图标、鼠标光标等。GDI支持两种类型的位图:老的“设备有关”位图,是GDI对象;新的“设备无关”位图,可以存储在磁盘文件中。
文本
文本通常不仅是所有的计算机图形系统中最复杂的部分,而且也是最重要的部分。Windows 98不仅支持TrueType字体,而且继续支持旧时的基于位图的字体。
⒋ 其他方面
映射模式和变换
虽然默认时以像素为单位进行绘图,但是并非局限于此。GDI映射模式允许用户以英寸、mm或者任何用户想使用的单位来绘图,但Windows 98不支持坐标变换。
元文件
元文件是以二进制形式存储的GDI命令的集合。元文件主要用于通过剪贴板传输矢量图形表示。
区域
区域是形状任意的复杂区,通常定义为较简单区域的布尔组合。在GDI内部,区域除了存储为最初用来定义区域的线条组合以外,还以一系列扫描线的形式存储。用户可以将区域用于绘制轮廓、填充和剪裁。
路径
路径是GDI内部存储的直线和曲线的集合。路径可以用于绘图、填充和剪裁,还可以转换为区域。
剪裁
绘图可以限制在客户区的某一部分中。剪裁区域可以是矩形或非矩形,剪裁通常是通过区域或者路径来定义的。
调色板
定制调色板通常限于显示256色的显示器。Windows仅保留这些色彩之中的20种供系统使用,用户可以改变其他236种色彩,以准确显示按位图形式存储的真实图像。。
打印
三 设备描述表
⒈ 获取DC句柄
方法一:
HDC hdc;
PAINTSTRUCT ps;
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);
通过方法四可以获取整个屏幕的DC句柄。
特例一:
有时用户只是需要获取关于DC的一些信息而并不进行任何绘画,这时,可以使用CreateIC来获取一个“信息描述表”的句柄,其参数与CreateDC函数相同,如:
hdc=CreateDC(TEXT(“DISPLAY”),NULL,NULL,NULL);
⒉ 获取DC信息
GetDeviceCaps函数:
int GetDeviceCaps(
HDC hdc, // handle to the device context
int nIndex // index
您可能关注的文档
- 英语常用的前缀I.doc
- 英语写作知识要点.doc
- 描述逻辑手册15章翻译(部分).doc
- 七百多个句子搞定考研词汇!!(句句经典!每句都配有准确翻译!).docx
- 路虎消息中心显示中英文对照.doc
- 第八届全国中学生英语能力大赛模拟题.doc
- 16天速记7000英语词.doc
- 2005年考研英语二真题和答案.doc
- 2006-2012年考研英语text1及答案.docx
- 九年级上学期英语(Unit 1~ Unit 2)测试卷.doc
- 苏科版八年级数学上册《第四章实数》单元检测卷及答案.docx
- 苏科版八年级数学上册《4.2立方根》同步测试题及答案.docx
- 北师大版八年级数学下册《3.3中心对称》同步测试题带答案.docx
- 北师大版八年级数学下册《3.2图形的旋转》同步测试题带答案.docx
- 惠普HP DesignJet Printers Safety precautions document 英文说明书用户手册.pdf
- IST Innovative Sensor Technology 温度传感器说明书用户手册.pdf
- 海洋仪器CA6163多功能安规测试仪英文产品资料.pdf
- Rollei禄莱Compactline Pocket Operation Manual (DE, EN)说明书用户手册.pdf
- MSI微星显示器 MPG 491CQPX QD-OLED产品手册用户手册(语言 Hebrew).pdf
- Intel英特尔质量和可靠性第7卷:质量测试覆盖率.pdf
文档评论(0)