




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3Windows图形设备接口及绘图 1 响应WM PAINT消息2 图形设备接口 GDI 3 使用设备描述表3 获取设备描述表句柄5 CDC及其派生类6 使用CDC成员函数绘制文本7 使用CDC成员函数绘制图形8 正确使用GDI对象9 设备坐标与逻辑坐标10 OpenGL绘图 实验作业 习题2 3 4 WM PAINT消息的产生无效矩形打开一个窗口改变窗口大小移动窗口切换窗口最小化 最大化窗口调用InvalidateRect函数调用UpdateWindow函数 2 响应WM PAINT消息OnPaint 3 1响应WM PAINT消息 3 2图形设备接口 GDI 1 图形设备接口 提供专门的数据结构即设备描述表 DC 和对DC操作的绘图函数 2 设备描述表 DC 用于代表图形输出设备如显示屏 打印机 3 设备无关性 利用GDI 所有的绘图操作都对设备描述表而不是具体的物理设备 设备描述表 一种专门用于代表图形输出设备 如屏幕 打印机和绘图仪等 的数据结构画布绘图工具 设备描述表属性 使用句柄 HDC 访问设备描述表设置设备描述表属性绘制图形和文本 设备描述表属性 GDI对象 画笔画刷字体位图裁剪区 caseWM PAINT hdc BeginPaint hWnd 1 获取设备描述表句柄 2 设置设备描述表属性 3 调用绘图函数绘图 4 释放设备描述表 3 3使用设备描述表绘图 1 BeginPaint和EndPaint函数 1 BeginPaintfunction准备在窗口绘图获得代表窗口的设备描述表句柄把有关绘图的信息放到PAINTSTRUCT结构变量中 响应WM PAINT消息绘图 必须调用该函数获取设备描述表句柄 3 4获取窗口设备描述表句柄 HDCBeginPaint HWNDhwnd handletowindowLPPAINTSTRUCTlpPaint pointertostructureforpaintinformation 函数原型 PAINTSTRUCTtypedefstructtagPAINTSTRUCT HDChdc BOOLfErase RECTrcPaint BOOLfRestore BOOLfIncUpdate BYTErgbReserved 32 PAINTSTRUCT 标志对指定窗口的绘图结束释放设备描述表句柄必须与BeginPaint函数成对调用函数原型 BOOLEndPaint HWNDhWnd CONSTPAINTSTRUCT lpPaint 2 EndPaintfunction 2 GetDC和RealeaseDC函数 1 GetDCfunction获取窗口设备描述表句柄用于响应非WM PAINT消息绘图 函数原型 HDCGetDC HWNDhWnd 2 ReleaseDCfunction释放设备描述表句柄必须与GetDC函数成对调用函数原型 intReleaseDC HWNDhWnd handletowindowHDChDC handletodevicecontext 3 5CDC及其派生类CDC 封装了所有与设备描述表有关的数据和操作 绘图函数 Ellipse 文本输出 TextOut 设置设备描述表属性 SelectObject SetTextColor 数据成员m hdc 设备描述表句柄 CPaintDC constructionCWnd BeginPaintdestructionCWnd EndPaintCClientDC constructionCWnd GetDCdestructionCWnd ReleaseDCCWindowDCGetWindowDCReleaseDC 3 6GDI对象与CGDIObject类 GDI对象与句柄使用GDI对象使用CGDIObject类 GDI对象与句柄 使用GDI对象基本规则 1 创建对象 2 用SelectObject函数把新创建的对象选入设备描述表 并保留原对象 3 完成绘图函数的调用后 把旧对象选入设备描述表 置换出创建的对象 4 删除创建的对象 由DeleteObject函数完成 caseWM PAINT hdc BeginPaint hWnd 使用CGDIObject类 数据成员m hObjectAttach函数Detach函数派生类 CPen CBrush CFont CBitmap CPallete和CRgn类 逻辑坐标系TextOut hdc x y szBuffer nLength 设备坐标系屏幕坐标系窗口坐标系窗口工作区坐标系视口 设备坐标 与窗口 逻辑坐标 3 7设备坐标与逻辑坐标 映像模式定义了逻辑坐标与设备坐标的转换CDC SetMapMode 窗口原点和视口原点调整逻辑坐标的原点窗口限度和视口限度调整逻辑坐标轴的方向和单位逻辑坐标与设备坐标的转换公式xViewport xWindow xWinOrg xViewExt xWinExt xViewOrg yViewport yWindow yWinOrg yViewExt yWinExt xViewOrg 设置逻辑坐标系的原点SetViewportOrgEx函数BOOLSetViewportOrgEx HDChdc 设备描述表句柄intX 使用设备单位 视口原点的X坐标值intY 使用设备单位 视口原点的Y坐标值LPPOINTlpPoint 指向POINT结构变量 存放原始的视口原点坐标 SetViewportOrgEx hdc cx 2 cy 2 NULL SetWindowOrgExBOOLSetWindowOrgEx HDChdc 设备描述表句柄intX 使用逻辑单位 窗口原点的X坐标值intY 使用逻辑单位 窗口原点的Y坐标值LPPOINTlpPoint 指向POINT结构变量 存放原始的窗口原点坐标 SetWindowOrgEx hdc cx 2 cy 2 NULL 1 设置映射方式MM ANISOTROPIC MM ISOTROPIC 做适当调整 2 设置窗口限度 SetWindowExt BOOLSetWindowExtEx HDChdc 设备描述表句柄intnXExtent 新设置的水平方向窗口限度intnYExtent 新设置的垂直方向窗口限度LPSIZElpSize 原始窗口限度 任意逻辑坐标系的设置 3 设置视口限度BOOLSetViewportExtEx HDChdc 设备描述表句柄intnXExtent 新设置的水平方向视口限度intnYExtent 新设置的垂直方向视口限度LPSIZElpSize 原始视口限度 坐标系的转换 DPToLP LPToDP ClientToScreen ScreenToClient 3 8使用CDC类绘制图形 绘制点和线COLORREFSetPixel POINTpoint COLORREFcrColor CPointMoveTo POINTpoint BOOLLineTo POINTpoint BOOLArc LPCRECTlpRect POINTptStart POINTptEnd BOOLAngleArc intx inty intnRadius floatfStartAngle floatfSweepAngle BOOLPolyline LPPOINTlpPoints intnCount BOOLPolyPolyline constPOINT lpPoints constDWORD lpPolyPoints intnCount BOOLPolyBezier constPOINT lpPoints intnCount 绘制封闭图形BOOLEllipse LPCRECTlpRect BOOLRectangle LPCRECTlpRect BOOLRoundRect LPCRECTlpRect POINTpoint BOOLPie LPCRECTlpRect POINTptStart POINTptEnd BOOLPolygon LPPOINTlpPoints intnCount BOOLPolyPolygon LPPOINTlpPoints LPINTlpPolyCounts intnCount CPen类和画笔 1 调用带参数的构造函数创建GDI画笔对象 例如 Cpenm Pen PS SOLID 1 RGB 0 0 255 2 先调用缺省构造函数创建CPen对象 然后调用Indirect函数创建GDI画笔对象 例如 Cpenm Pen LOGPENlogpen logpen lopnStyle PS SOLID 画笔样式logpen lopnWidth 1 画笔宽度logpen lopnColor RGB 0 0 255 m Pen CreatePenIndirect 1 画刷和CBrush类 LOGBRUSH的结构定义如下 typedefstructtagLOGBRUSH lbUINTlbStyle COLORREFlbColor LONGlbHatch LOGBRUSH 阴影线的样式 1 创建实心画刷使用带参数的构造函数创建CBrushbrush RGB 255 0 0 先使用缺省的构造函数创建Cbrush对象 然后调用成员函数创建画刷CBrushbrush brush CreateSolidBrush RGB 255 0 0 2 创建阴影线画刷使用带参数的构造函数创建 例如 CBrushbrush HS DIAGCROSS RGB 0 255 0 先使用缺省的构造函数创建Cbrush对象 然后调用成员函数创建画刷 如 CBrushbrush brush CresteHatchBrush HS DIAGCROSS RGB 0 255 0 3 创建位图画刷准备一个位图对象CBitmapbitmap bitmap LoadBitmap IDB BITMAP1 使用CBrush类带参数的构造函数创建位图画刷 例如 CBrushbrush 1 TextOut2 DrawText 在指定矩形区域以一定格式输出字符串DT BOTTOMDT CENTERDT LEFTDT RIGHTDT SINGLELINEDT TOPDT VCENTER 3 9使用CDC成员函数绘制文本 文本输出函数 3 ExtTextOut函数功能 在指定位置输出字符串 并且在文本周围给矩形填充背景色 函数原型 BOOLExtTextOut intx inty UINTnOptions LPCRECTlpRect constCString voidCChildView OnPaint CPaintDCdc this devicecontextforpaintingdc SetBkColor RGB 0 255 0 CRectrect 0 0 200 40 intarray 5 40 25 35 45 15 dc ExtTextOut 10 10 ETO CLIPPED ETO OPAQUE 4 TabbedTextOut函数函数功能 和TextOut 的差不多 只是它支持制表符 定义一组制表符的位置 函数原型 CSizeTabbedTextOut intx inty constCString voidCChildView OnPaint CPaintDCdc this devicecontextforpaintingintarray 3 80 140 200 dc TabbedTextOut 0 0 CString hello thow tare tyou 0 NULL 0 dc TextOut 0 180 CString hello thow tare tyou 1 SetTextAlignTA BASELINETA BOTTOMTA TOPTA CENTERTA LEFTTA RIGHT 文本格式控制 2 SetTextCharacterExtra函数功能 设置字符间距函数原型 intSetTextCharacterExtra intnCharExtra 参数说明 nCharExtra为添加的空白数 逻辑单位 3 SetTextJustification函数功能 设置词间距函数原型 intSetTextJustification intnBreakExtra intnBreakCount 参数说明 nBreakExtra为所有空格添加的空白数 逻辑单位 nBreakCount为一行字符串中的空格数 GetTextExtent函数函数原型 CSizeGetTextExtent constCString str 函数功能 返回输出字符串str所占用的显示空间 逻辑单位 voidCChildView OnPaint CPaintDCdc this dc SetTextAlign TA RIGHT dc TextOut 100 20 CString rightaligned dc SetTextAlign TA LEFT dc TextOut 100 60 CString leftaligned intoldextra dc SetTextCharacterExtra 5 dc TextOut 100 100 CString leftalignedandadd5extra CSizesize dc GetTextExtent CString leftalignedandadd5extraandjustified CRectrect GetClientRect 3 6 3获取文本尺寸 1 GetTextMetrics2 GetTextExtentPoint typedefstructtagTEXTMETRIC LONGtmHeight LONGtmAscent LONGtmDescent LONGtmInternalLeading LONGtmExternalLeading LONGtmAveCharWidth LONGtmMaxCharWidth LONGtmWeight TEXTMETRIC 设置字符和背景颜色 1 SetTextColor函数 2 SetBKColor函数 CFont类与字体 Windows字体栅格型 Raster 矢量型 Vector TrueType字体要素字型 字体名称 字型样式 字体样式 大小 从低端到顶端的距离 获取字体尺寸信息 GetTextMetrics函数BOOLGetTextMetrics LPTEXTMETRIClptm typedefstructtagTEXTMETRIC inttmHeight inttmAscent inttmDescent inttmInternalLeading inttmExternalLeading inttmAveCharWidth inttmMaxCharWidth inttmWeight BYTEtmItalic BYTEtmUnderlined BYTEtmStruckOut BYTEtmFirstChar BYTEtmLastChar BYTEtmDefaultChar BYTEtmBreakChar BYTEtmPitchAndFa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 8203-4:2025 EN Fibre-reinforced plastic composites - Non-destructive testing - Part 4: Laser shearography
- GB/T 17001.4-2025防伪油墨第4部分:日光激发变色防伪油墨
- GB/T 46087.1-2025车间底漆焊接及相关工艺试验第1部分:一般要求
- 应急安全培训软件课件
- 应急与安全培训演练总结课件
- 秋季腹泻自然病程规律与预后影响因素
- 购买电子产品合同(标准版)
- 中策职业学校钱塘学校钱塘校区设备项目网络攻防实训室项目(一期)招标文件
- 2025年法律硕士测试卷含完整答案详解【名师系列】
- 住宅专项维修资金管理基础信息数据标准
- 2025至2030中国HPV相关疾病行业项目调研及市场前景预测评估报告
- 无领导小组讨论的经典面试题目及答案解析
- 许昌襄城县特招医学院校毕业生招聘笔试真题2024
- 永辉超市快消培训
- 2025北京京剧院招聘10人考试备考试题及答案解析
- 2025至2030中国催收外包服务行业销售模式及未来营销策略分析报告
- 2025-2030矿山工程机械租赁市场商业模式与风险防控报告
- 公务用车管理培训课件
- 跨文化视野下《哪吒之魔童降世》字幕翻译探究
- 2026年高考语文复习:文言文背诵篇目理解性默写练习题汇编(含答案)
- 2025高考新课标二卷语文试卷(含答案)
评论
0/150
提交评论