




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设备描述表和图形对象,设备描述表与图形设备接口MFC的设备描述表及图形对象CDC的绘图用CDC输出汉字,2,7.1设备描述表与图形设备接口,Windows图形设备接口(GDI)是为与设备无关的图形设计的。所谓设备的无关性,就是操作系统屏蔽了硬件设备的差异,因而设备无关性能使用户编程时无需考虑特殊的硬件设置图形设备接口(GDI)GDI负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字,是Windows系统的重要组成部分,3,1.GDI的一些基本概念设备描述表即为设备环境的属性的集合,应用程序与输出设备之间的桥梁,Win系统,外设,直接访问,统一的设备环境(DC),使应用程序与设备相连,4,2.图形刷新,(1)刷新请求,应用程序在窗口中绘制了一个椭圆,颜色列表框覆盖了椭圆的一部分,关闭颜色选框后,应用程序需要恢复被覆盖部分的颜色和形状,5,(2)系统对刷新请求的响应当用户区的内容需要刷新时,系统向应用程序消息队列发送WM_PAINT消息,系统在应用程序的消息队列中加入该消息,以通知窗口函数执行刷新处理,三种刷新,窗口移动后的刷新被覆盖区域的刷新对象穿越后的刷新(系统自动完成),用户区移动或显示用户窗口大小改变程序通过滚动条滚动窗口,窗口被另一个窗口覆盖的恢复如下拉式菜单关闭等,光标穿过用户区图标拖过用户区,6,常用的Windows应用程序刷新窗口的方法,保存副本。刷新时将副本拷贝到相应的窗口中,记录事件。刷新时重新执行这个曾经发生的事件,重新绘制。将图形绘制处理程序放在消息WM_PAINT响应模块中,刷新时重绘图形,(3)有效的刷新方法,7,7.2MFC设备描述表CDC类,MFC将设备描述表(DC)和图形设备接口(GDI)封装在一起做为设备描述表类CDC类CDC既包括了设备属性又包括了绘图方法,通过此方法可以实现GDI的所有图形输出CDC包括了177种函数,还要很多数据成员,使用时特别注意内存上的管理,标准使用方法举例:CDC*pDC=GetDc();/假设此代码位于CWnd类调用函数申请DC对象pDC-GetTextMetrics(MyPen.CreatePen(intnPenStyle,/确定画笔样式intnWidth,/画笔宽度COLORREFrgbColor/画笔颜色);,创建画笔后,必须调用SelectObject函数将其选入设备环境。SelectObject(CPen*pen);/函数需要画笔的指针,PS_DASH:虚线PS_DASHDOT:点划线PS_DASHDOTDOT:双点划线PS_DOT:点线PS_INSIDEFRAME:实线PS_NULL:不可见线PS_SOLID:实线,13,2.画刷CBrush类,CBrush类能够以各种不同的纹理填充图形CBrush类有多种构造函数:CBrush();CBrush(COLORREFCrColor);/用色彩填充CBrush(intnIndex,COLORREFCrColor);/用色彩纹理CBrush(CBitmap*pBitmap);/用位图填充定义方法:CBrushMyBrush(HS_BDIAGONAL,RGB(255,0,0);,HS_BDIAGONAL45度从左上到右下HS_DIAGCROSS45度叉线HS_FDIAGONAL45度从左下到右上HS_CROSS垂直相交的阴影线HS_HORIZONTAL水平阴影线HS_VERTICAL垂直阴影线,14,3.颜色,Windows使用宏RGB定义绘图的颜色,其形式为:RGB(nRed,nGreen,nBlue),红色值,蓝色值,绿色值,RGB(255,0,0),RGB(0,255,0),RGB(0,0,255),15,7.5用CDC的绘图函数与对象绘图,一、常用绘图函数,1设置画笔当前位置的函数MoveTo,CPointMoveTo(intx,inty,/x、y分别为新位置的逻辑坐标),2从当前位置向指定坐标点画直线的函数LineTo,BOOLLineTo(intx,inty)/x和y为线段的终点坐标,3从当前位置开始,依次用线段连接lpPoints中指定的各点BOOLPolyline(LPPOINTlpPoints,/指向包含各点坐标的POINT结构数组的指针intnCount/nCount为POINT数组中点的个数),16,4绘制不填充椭圆弧线的函数Arc,BOOLArc(intx1,inty1,/边框矩形左上角的逻辑坐标intx2,inty2,/边框矩形右下角的逻辑坐标intx3,inty3,/椭圆弧起始点坐标intx4,inty4/椭圆弧终止点坐标),17,5绘制饼图,并用当前画刷进行填充BOOLPie(intx1,inty1,/边框矩形左上角的逻辑坐标intx2,inty2,/边框矩形右下角的逻辑坐标intx3,inty3,/椭圆弧起始经线的确定点坐标intx4,inty4/椭圆弧终止经线的确定点坐标),18,6绘制矩形,并用当前画刷进行填充BOOLRectangle(intx1,inty1,intx2,inty2),(x1,y1)和(x2,y2)分别为矩形的左上角和右下角的逻辑坐标,7绘制圆角矩形,并用当前画刷填充BOOLRoundRect(intx1,inty1,intx2,inty2,intnWidth,intnHeight),圆角的高度和宽度,8绘制椭圆或圆,并用当前画刷填充BOOLEllipse(intx1,inty1,intx2,inty2),9绘制多边形,并用当前画刷填充BOOLPolygon(LPPOINTlpPoints,intnCount),包含各点坐标的POINT数组的地址,多边形点的个数,19,二、用CDC绘图举例,定时器消息ON_TIMER:实现每隔一段时间发送一个定时器消息,利用SetTimer()函数设置,KillTimer()函数销毁,精度为ms级添加定时器消息及处理函数的步骤如前设置定时器函数SetTimer()UINTSetTimer(UINTnIDEvent,UINTnElapse,void(CALLBACKEXPORT*lpfnTimer)(HWND,UINT,UINT,DWORD)CDC绘图例程之一(膨胀的欲望)例程演示:,20,CDC绘图例程之二(MFC世界的晚霞),WM_TIMER消息处理函数OnTimer()中随机画点主要实现函数:SetPixel(intx,inty)画点函数MapRand(intx)产生随机点BOOLTextOut(intx,inty,constCString例程演示:,21,CDC绘图例程之三(多彩的网络世界),利用定时器调用画线函数产生效果主要实现函数:CPointMoveTo(intx,inty)BOOLLineTo(intx,inty)BOOLTextOut(intx,inty,constCString例程演示:,22,CDC绘图例程之四(贝叶斯万花筒),利用定时器绘制贝叶斯曲线主要实现函数:BOOLPolyBezier(constPOINT*lpPoints,intnCount);例程演示:,23,7.6用CDC输出汉字,CDC有多种对字体及文本输出的操作函数MFC提供了CFont类CFont类的创建字体方法:CreateFont()初始化具有特定特征的CFont对象CreateFontIndirect()初始化LOGFONT结构定义对象CreatePointFont()初始化具有指定高度和字型的对象CreatePointFontIndirect()初始化LOGFONT对象LOGFONT结构描述了字体的所有属性,24,CDC常用的文本操作函数,设置文本颜色SetTextColor(COLORREFCrColor)设置字体背景SetBkMode(intnBkMode)字符串在指定区域输出DrawText(LPCTSTRlpszString,intnCount,lPRECTlpRect,UINTnFormat)文本输出函数TextOut(intx,inty,LPCTSTRlpszString,intnCount)文本输出例程ILOVEVC演示:,25,总结,CDC类和CGdiObject类的主要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兴业银行北京市怀柔区2025秋招笔试价值观测评题专练及答案
- 华夏银行沈阳市和平区2025秋招笔试EPI能力测试题专练及答案
- 民生银行潍坊市高密市2025秋招笔试EPI能力测试题专练及答案
- 华夏银行无锡市新吴区2025秋招笔试创新题型专练及答案
- 中信银行镇江市京口区2025秋招笔试综合模拟题库及答案
- 九年级道德与法治下册 第一单元 我们共同的世界 第二课 构建人类命运共同体 第1框推动和平与发展说课稿 新人教版
- 二、绘制图形说课稿-2023-2024学年小学信息技术(信息科技)三年级下册电子工业版(宁夏)
- 平安银行北京市密云区2025秋招笔试价值观测评题专练及答案
- 提升公众心理健康意识的多元化宣传策略
- 高级模型考试题及答案解析
- 2024年辽宁省地矿集团招聘真题
- 【《基于哈佛分析框架的爱尔眼科公司财务分析(数据图表论文)》13000字】
- 榆林市无人机管理办法
- 建筑公司安全管理制度范本
- 医保飞检培训
- 物流供应链融资方案计划书范文
- 2025年教学设计与评估能力考试试题及答案
- 亚朵酒店培训
- 医院医疗服务培训
- 农田植物养护方案(3篇)
- 破产清算审计管理制度
评论
0/150
提交评论