【教学课件】第7章图形设备接口GDI.ppt
《【教学课件】第7章图形设备接口GDI.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章图形设备接口GDI.ppt(30页珍藏版)》请在三一办公上搜索。
1、第7章 图形设备接口GDI,本章主要介绍GDI的相关知识与编程方法。在应用程序中,绘图、输出文本、显示图片和打印等操作都需要使用GDI图形设备接口。GDI提供了一些函数,这些函数具有设计者需要的功能。,7.1 回顾前面的例子,前面章节曾经接触过与GDI有关的知识,即在使用GDI之前需要创建DC(GetDC),在不使用DC时需要将其释放(ReleaseDC),通过DC和GDI的相关函数可进行绘制操作。例如在第2章的例子中,如果要在窗口输出鼠标的当前坐标,需要编写如下代码:case WM_MOUSEMOVE:/得到当前鼠标的位置int xPos,yPos;xPos=LOWORD(lParam);y
2、Pos=HIWORD(lParam);char szOutPut20;sprintf(szOutPut,x=%d,y=%d,xPos,yPos);/得到DC句柄hDC=:GetDC(hWnd);/通过DC将文本输出到窗口上:TextOut(hDC,0,0,szOutPut,strlen(szOutPut);/释放DC句柄:ReleaseDC(hWnd,hDC);break;,7.2 GDI操作函数,本节将详细介绍GDI中常用的绘图函数,这些函数是图形绘制方面的基本函数,用这些函数可以绘制出任意图形。,7.2.1 绘制文本TextOut和DrawText,通过前面的学习已经知道,绘制文本主要使用
3、TextOut和DrawText这个函数,TextOut的定义如下。BOOL TextOut(HDC hdc,/DC句柄int nXStart,/要绘制文本的左上角x坐标int nYStart,/要绘制文本的左上角y坐标LPCTSTR lpString,/要输出的文本字符串int cbString/输出长度);TextOut根据给出的坐标和要绘制的长度绘制文本,而DrawText则通过给定的一个矩形区域来绘制文本,DrawText的定义如下。int DrawText(HDC hDC,/DC句柄LPCTSTR lpString,/要输出的文本字符串int nCount,/字符串的长度LPRECT
4、 lpRect,/将文本绘制在一个矩形区域内UINT uFormat/绘制格式);,7.2.2 绘制点SetPixel,绘制点使用SetPixel函数,SetPixel函数的定义如下。COLORREF SetPixel(HDC hdc,/DC句柄int X,/点的x坐标int Y,/点的y坐标COLORREF crColor/点的颜色);给出一个点的坐标和颜色,便可使用SetPixel在指定的DC上绘制点。有时需要改变绘制的点的大小,这时必须改变当前设备的画笔,改变画笔的方法在后面介绍。,7.2.3 绘制直线MoveToEx和LineTo,绘制直线分为两个步骤,即先使用MoveToEx设置线的
5、起点,再使用LineTo指定一个终点,并在起点到终点之间画线。MoveToEx定义如下。BOOL MoveToEx(HDC hdc,/DC句柄int X,/起点的x坐标int Y,/起点的y坐标LPPOINT lpPoint/一个POINT结构体类型的变量,将先前的起点放入POINT结构体中);,7.2.4 绘制椭圆Ellipse,绘制椭圆可以使用Ellipse函数,Ellipse的定义如下。BOOL Ellipse(HDC hdc,/DC句柄int nLeftRect,/椭圆外切矩形的左上角x坐标int nTopRect,/椭圆外切矩形的左上角y坐标int nRightRect,/椭圆外切矩
6、形的右下角x坐标int nBottomRect/椭圆外切矩形的右下角y坐标);,7.2.5 绘制矩形FillRect与Rectangle,绘制矩形的2个函数分别定义如下。int FillRect(HDC hDC,/DC句柄CONST RECT*lprc,/RECT结构体指针,表示填充的矩形区域HBRUSH hbr/矩形背景颜色用此参数指定画刷填充);BOOL Rectangle(HDC hdc,/DC句柄int nLeftRect,/矩形区域左上角x坐标int nTopRect,/矩形区域左上角y坐标int nRightRect,/矩形区域右下角x坐标int nBottomRect/矩形区域右
7、下角y坐标);,7.3 坐标映射,通常,绘图时的坐标原点为窗口的左上角,并且x轴向右,y轴向下。坐标每增1,实际上是像素值增1。这些参数可以通过改变坐标映射模式来修改。坐标映射模式的相关函数如表所示。,7.4 MFC中封装的GDI,MFC对GDI进行了封装,其中CDC是最基本的DC类。CClientDC与CWindowDC从CDC派生。一些GDI操作函数也被封装到CDC中。,7.4.1 使用CDC、CClientDC和CWindowDC绘制图形,MFC对DC的封装是CDC类。CDC类的成员m_hDC为DC句柄。同时CDC将GDI的操作函数也全部封装起来,例如下面的代码会在窗口中输出文本。/*纯
8、GDI操作HDC hDC=:GetDC(this-m_hWnd);:TextOut(hDC,0,0,Hello World,strlen(HelloWorld);:ReleaseDC(this-m_hWnd,hDC);*/CDC*pDC=this-GetDC();/CWnd:GetDCpDC-TextOut(0,0,Hello World);/封装TextOutthis-ReleaseDC(pDC);/CWnd:ReleaseDC,7.4.2 示例使用CClientDC绘制椭圆,本例通过一个简单的示例来演示如何使用CClientDC进行绘图。具体操作步骤如下。(1)新建单文档程序,工程名为eg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 图形 设备 接口 GDI

链接地址:https://www.31ppt.com/p-4879278.html