- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GDIGDI从入门到精通-第一讲
第一讲:GDI编程的基本概念 主讲人:阙海忠 UIPower CEO GDI编程的基本概念 GDI是图形设备接口(Graphics Device Interface)的英文首字母的简称。 Windows图形编程就是针对Windows自带的图形设备接口函数库和设备环境(DC)进行操作。通过调用这些函数库中的函数来完成绘制工作。 * 图形设备接口:GDI的概念 GDI是一个抽象的接口,是一个关于图形显示的函数库。通过这个接口可以实现对图形的颜色、线条的粗细等属性的控制。它是我们的程序与计算机硬件之间的一个桥梁。 * 设备环境DC的概念 设备环境DC(Device Context 又称为设备上下文,也称为设备描述表)。它是一个关于如何绘制图形的方法的集合,它既可以绘制各种图形,也可以确定在应用窗口中绘制图形的方式,就是绘图模式和映射模式。 在Win32编程中,设备环境是用HDC 来标识。H的意思Handle句柄的意思。 * 通过GetDC函数来获得相应窗口的HDC GetDC函数适合在窗口现有图形的基础上进行绘制。 代码段: { HDC hDC = ::GetDC(hWnd); //其他的绘图操作代码 …… ::ReleaseDC(hWnd,hDC); } GetDC中传入的参数hWnd是窗口的句柄,它返回和这个窗口相关的DC * 通过BeginPaint函数来获得所在窗口的HDC BeginPaint函数是将窗口上所有内容清除干净,然后在上面绘制。 代码段: { PAINTSTRUCT ps; HDC hDC = ::BeginPaint(hWnd,ps); //其他的绘图操作代码 ::EndPaint(hWnd,ps); } * 通过BeginPaint函数获得所在窗口的HDC typedef struct tagPAINTSTRUCT { HDC hdc;// 显示器的设备环境句柄 BOOL fErase;//是否擦除背景 RECT rcPaint;//指定了需要绘图的窗口区域 BOOL fRestore; BOOL fIncUpdate; BYTE rgbReserved[32]; } PAINTSTRUCT; * 通过CreateCompatibleDC 创建兼容内存DC 通过调用CreateCompatibleDC函数来创建与目标DC兼容的内存DC。一般用于解决界面的闪烁问题。 代码片段: { HDC hMemDC = ::CreateCompatibleDC(hDest); //其他的绘图操作代码 … ::BitBlt(hDest,x,y,w,h,hMemDC,0,0,SRCCOPY); … ::DeleteDC(hMemDC); } * 常用的GDI对象的介绍 画笔Pen: 在GDI中,用HPEN来表示画笔。H是代表句柄的意思。 在GDI中,画线,画边框(如矩形边框,圆边框,饼边框)都是采用画笔来操作的。 GDI默认的画笔是黑色,宽度为1,样式为实线的画笔。 * 常用的GDI对象的介绍 画刷Brush: 在GDI中,用HBRUSH来表示画刷。H是代表句柄的意思。 在GDI中,填充矩形,填充圆,填充饼等以及刷窗口背景都是通过画刷来操作的。 GDI默认的画刷是白色的画刷。 * 常用的GDI对象的介绍 字体Font: 在GDI中,用HFONT来表示字体。H是代表句柄的意思。 在GDI中,所有的文本绘制,都是要基于具体的字体对象来绘制的。 GDI中默认的字体,是系统等宽字体,比如对话框标题一般就采用这个字体。 * 常用的GDI对象的介绍 区域Region: 在GDI中,用HRGN来表示区域。H是代表句柄的意思。 在窗口中,一个区域可以是椭圆形,多边形,或是更常见的矩形。 * 常用的GDI对象的介绍 位图Bitmap: 在GDI中,用HBITMAP来表示位图。H是代表句柄的意思。 GDI的绘制,从大体上,分为图形绘制跟图像绘制。对于线,矩形,圆,饼等的绘制是属于图形绘制。而对位图的绘制是属于图像绘制。 * SelectObject HGDIOBJ WINAPI SelectObject(HDC hdc, HGDIOBJ h); 第一个参数是设备DC。 第二个参数是HGDIOBJ,其实是一个void* 。这个函数传入一个新的GDI对象到第一个参数的DC中,并返回该DC的老的相同类型的GDI对象。 * GDI对象
文档评论(0)