- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§3 ? Windows 图形设备接口及绘图 实验作业 习题2,3,4 §3.2 图形设备接口(GDI) 1.? 图形设备接口—提供专门的数据结构即设备描述表(DC)和对DC操作的绘图函数。 2.? 设备描述表(DC)—用于代表图形输出设备如显示屏、打印机; 3.? 设备无关性—利用GDI,所有的绘图操作都对设备描述表而不是具体的物理设备。 设备描述表 一种专门用于代表图形输出设备(如屏幕、打印机和绘图仪等)的数据结构 画布 绘图工具(设备描述表属性) 使用句柄(HDC)访问设备描述表 设置设备描述表属性 绘制图形和文本 GDI对象 画笔 画刷 字体 位图 裁剪区 case WM_PAINT: hdc = BeginPaint(hWnd, ps); RECT rt; GetClientRect(hWnd, rt); SetTextColor(hdc,RGB(255,0,0)); SetBkColor(hdc,RGB(0,0,255)); DrawText(hdc, szHello, strlen(szHello), rt, DT_CENTER); EndPaint(hWnd, ps); break; (1)? 获取设备描述表句柄 (2)?? 设置设备描述表属性 (3)??调用绘图函数绘图 (4)?? 释放设备描述表 3.4 获取窗口设备描述表句柄 1. BeginPaint和EndPaint函数 (1) BeginPaint function 准备在窗口绘图 获得代表窗口的设备描述表句柄 把有关绘图的信息放到PAINTSTRUCT 结构变量中。 响应WM_PAINT消息绘图,必须调用该函数获取设备描述表句柄。 2.GetDC和RealeaseDC函数 (1) GetDC function 获取窗口设备描述表句柄 用于响应非WM_PAINT消息绘图。 函数原型: HDC GetDC( HWND hWnd ); 3.5 CDC及其派生类 CDC: 封装了所有与设备描述表有关的数据和操作。 绘图函数:Ellipse()… 文本输出:TextOut()… 设置设备描述表属性:SelectObject(), SetTextColor()… 数据成员m_hdc:设备描述表句柄。 3.6 GDI对象与CGDIObject类 GDI对象与句柄 使用GDI对象 使用CGDIObject类 case WM_PAINT: hdc = BeginPaint(hWnd, ps); HPEN hNewPen,hOldPen; hNewPen=CreatePen(PS_DASH,1,RGB(255,0,0)); hOldPen=(HPEN)SelectObject(hdc,hNewPen); MoveToEx(hdc,0,0,NULL); LineTo(hdc,100,100); hNewPen=(HPEN)SelectObject(hdc,hOldPen); DeleteObject(hNewPen); EndPaint(hWnd, ps); break; 使用CGDIObject类 数据成员m_hObject Attach函数 Detach函数 派生类: CPen、CBrush、CFont、CBitmap、CPallete和CRgn类 逻辑坐标系 TextOut(hdc, x,y,szBuffer,nLength) 设备坐标系 屏幕坐标系 窗口坐标系 窗口工作区坐标系 视口(设备坐标)与窗口(逻辑坐标) 映像模式 定义了逻辑坐标与设备坐标的转换 CDC:: SetMapMode(); 窗口原点和视口原点 调整逻辑坐标的原点 窗口限度和视口限度 调整逻辑坐标轴的方向和单位 逻辑坐标与设备坐标的转换公式 xViewport=(xWindow-xWinOrg)*(xViewExt/xWinExt)+xViewOrg; yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+xViewOrg; 设置逻辑坐标系的原点 SetViewportOrgEx函数 BOOL SetViewportOrgEx( HDC hdc, // 设备描述表句柄 int X, // 使用设备单位,视口原点的X坐标值 int Y, // 使用设备单位,视口原点的Y坐标值 LPPOINT lpPoint /
文档评论(0)