分享
分销 收藏 举报 申诉 / 27
播放页_导航下方通栏广告

类型第6章图形设备接口与绘图1.ppt

  • 上传人:xrp****65
  • 文档编号:13330296
  • 上传时间:2026-03-02
  • 格式:PPT
  • 页数:27
  • 大小:459KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    图形 设备 接口 绘图
    资源描述:
    单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,前一页,休息,第,6,章,图形设备接口与绘图,VC+,程序设计,1,教学目标,了解设备环境和图形设备接口(,GDI,)的基本概念。,掌握常用,GDI,对象的使用方法。,掌握如何绘制图形和输出文本。,2,本章主要内容,设备环境和设备环境类,GDl,绘图对象,CDC,中的绘图操作,绘制时钟,3,6.1,设备环境和设备环境类,6.1.1,设备环境,图形设备接口(,Graphics Device Interface,,,GDI,)是,Windows,的重要组成部分,用户通过调用,GDI,函数使用硬件设备,,GDI,通过不同设备提供的驱动程序将绘图语句转换为对应的绘图指令,避免了用户对硬件直接进行操作,从而实现了设备无关性。,4,为了体现,Windows,的设备无关性,应用程序的输出不直接面向显示器或打印机等物理设备,而是面向一个称为设备环境(,Device Context,,,DC,)的虚拟逻辑设备。设备环境也叫设备描述表或设备上下文,它是,Windows,定义的一个数据结构,该数据结构包含了向设备输出时所需要的绘图属性。在使用任何,GDI,函数之前,必须首先创建一个设备环境。,Windows,应用程序通过设备环境操作物理设备的绘图过程,5,6.1.2,设备环境类,1,设备环境类及其功能,CDC,CClientDC,CWindowDC,CPaintDC,CMetaFileDC,2,设备环境类,CDC,的内容,当前,GDI,绘图对象及其管理,映射模式,绘图操作,6,6.1.3,获取设备环境,1,在视图类的,OnDraw,(),中输出图形或文本,使用,MFC AppWizard,生成,SDI,或,MDI,应用程序时,视图类的,OnDraw,(),的参数,pDC,就是一个指向,CDC,的指针,在,OnDraw,(),中绘图就是使用指针,pDC,标志的设备环境。该指针是在程序响应,WM_PAINT,消息时由,OnPain,(),创建并传递给,OnDraw,(),的。,在视图的客户区中输出一行文本和绘制一个矩形:,7,2,使用设备环境类的对象获取设备环境,如果不是在视图类的,OnDraw,(),中绘图,则需要自己声明设备环境类的对象,并使用,this,指针初始化该对象。下面是单击消息处理函数中绘制一个椭圆的代码:,void CEx6_1View:OnLButtonDown(UINT,nFlags,CPoint,point),/TODO:Add your message handler code here and/or call default,CClientDC,dc(this,);,/,声明客户区设备环境,CRect,r;,GetClientRect(&r,);,/,获取客户区大小,dc.Ellipse(r,);,/,绘制椭圆,CView:OnLButtonDown(nFlags,point);,8,3,使用,CWnd,类的,GetDC,(),获取设备环境,如果绘图操作不是在,WM_PAINT,消息处理函数中,还可以通过调用,CWnd,类的成员函数,GetDC,(),获取设备环境,调用,ReleaseDC,(),释放设备环境。例如,右击消息处理函数中绘制一个圆角矩形的代码如下:,void CEx6_1View:OnRButtonDown(UINT,nFlags,CPoint,point),/TODO:Add your message handler code here and/or call default,CDC*,pDC,=,GetDC,();,/,申请设备环境,pDC,-RoundRect(80,80,400,400,50,50);,/,绘制圆角矩形,ReleaseDC(pDC,);,/,释放设备环境,CView:OnRButtonDown(nFlags,point);,9,6.2,GDl,绘图对象,6.2.1,GDI,对象分类,CPen,类,CBrush,类,CFont,类,CRgn,类,CBitmap,类,CPalette,类,10,6.2.2,CPen,类,1,库存画笔,库存画笔有三种:,BLACK_PEN,(黑色画笔)、,WHITE_PEN,(白色画笔)和,NULL_PEN,(空画笔)。,2,自定义画笔,(,1,)创建画笔,方法一:使用,CPen,类的带参构造函数定义画笔对象,函数原型如下:,CPen(int,nPenStyle,int,nWidth,COLORREF,crColor,);,方法二:使用,CPen,类的无参构造函数定义画笔对象,再调用,CreatePen,(),创建指定画笔。,CreatePen,(),原型如下:,BOOL,CreatePen(int,nPenStyle,int,nWidth,COLORREF,crColor,);,11,(,2,)装载画笔,创建一个画笔后,必须将画笔选入设备环境才能使用。可以使用,CDC,类的成员函数,SelectObject,(),将新的画笔选入设备环境,该函数原型如下:,CPen,*,SelectObject(CPen,*,pPen,);,(,3,)还原画笔,当绘图完成后,应该调用,CDC,类的成员函数,SelectObject,(),恢复设备环境原来的画笔,并调用,CGdiObject,类的成员函数,DeleteObject,(),释放画笔所占的内存资源。,示例:,pDC,-,SelectObject(pOldPen,);/,恢复原来的画笔,NewPen.DeleteObject,();/,释放画笔资源,12,6.2.3,CBrush,类,1,库存画刷,库存画刷有:,BLACK_BRUSH,(黑色画刷)、,DKGRAY_BRUSH,(深灰色画刷)、,GRAY_BRUSH,(灰色画刷)、,LTGRAY_BRUSH,(浅灰色画刷)、,NULL_BRUSH,(空画刷,即内部不填充)和,WHITE_BRUSH,(白画刷)。,2,自定义画刷,实心画刷:与实心画笔相似,可以通过,COLORREF,在创建画刷时设置颜色。,阴影画刷:用预定义阴影图案来填充区域。,位图画刷:用,8,像素,8,像素的位图填充区域。,13,(,1,)创建实心画刷函数,CreateSolidBush,(),函数原型为:,BOOL,CreateSolidBrush,(COLORREF,crColor,);,(,2,)创建阴影画刷函数,CreateHatchBrush,(),函数原型为:,BOOL,CreateHatchBrush,(,int,nIndex,COLORREF,crColor,);,(,3,)创建位图画刷函数,CreatePatternBrush,(),函数原型为:,BOOL,CreatePatternBrush,(,CBitmap,*,pBitmap,);,14,6.2.4,CFont,类,在输出文本时,可以设置文本的属性从而实现不同的输出效果,,CFont,类封装了,Windows,的,GDI,字体并且提供了操作字体的成员函数。在使用字体时,首先要声明一个,CFont,对象,由于,CFont,类只有一个无参构造函数,所以对象声明后不能马上使用,还必须调用,CreateFont,、,CreateFontIndirect,、,CreatePointFont,或,CreatePointFontIndirect,函数对字体对象进行初始化,然后才可以使用该对象的成员函数操纵字体。,15,1,CreateFont,(),CreateFont,(),的原型如下:,BOOL,CreateFont(int,nHeight,int,nWidth,int,nEscapement,int,nOrientation,int,nWeight,BYTE,bItalic,BYTE,bUnderline,BYTE,cStrikeOut,BYTE,nCharSet,BYTE,nOutPrecision,BYTE,nClipPrecision,BYTE,nQuality,BYTE,nPitchAnd,Family,LPCTSTR,lpsz,Facename,);,2,CreateFontIndirect,(),CreateFontIndirect,(),的原型如下:,BOOeaL,CrteFontIndirect(const,LOGFONT*,lpLogFont,);,16,6.2.5,CBitmap,类,在,VC+,中使用位图的一般步骤为:首先声明一个,CBitmap,类对象,然后对位图对象进行初始化并选入设备环境,位图使用完毕后还要调用,DeleleObject,(),将其清除。,1,LoadBitmap,(),该函数用于将指定位图资源加载到内存并与,CBitmap,类对象关联起来。函数原型为:,BOOL,LoadBitmap(LPTSTR,lpszResourceName,);,BOOL,LoadBitmap(UNIT,nIDResource,);,2,CreateCompatibleBitmap,(),该函数用于创建一个与指定的设备环境兼容的位图。函数原型为:,BOOL,CreateCompatibleBitmap(CDC,*,pDC,int,nWidth,int,nHeight,);,3,BitBlt,(),该函数用于把源设备环境中的位图复制到当前设备环境中。函数原型为:,BOOL,BitBlt(int,x,int,y,int,nWidth,int,nHeight,CDC,*,pSrcDC,int,xSrc,int,ySrc,DWORD,dwRop,);,17,6.2.6,CRgn,类,一个区域是由多边形、椭圆或二者组合形成的一种范围,可以利用它来进行填充、裁剪某个区域。,CRgn,类封装了一个,Windows GDI,区域对象,该类提供了区域的创建、更改等操作。,1,构造,CRgn,对象,2,初始化,CRgn,对象,使用成员函数,CreateRectRgn,(),创建一个矩形区域,函数原型为:,BOOL,CreateRectRgn(int,x1,int y1,int x2,int y2);,使用成员函数,CreateRectRgnIndirect,(),间接创建一个矩形区域,函数原型为:,BOOL,CreateRectRgnIndirect(LPCRECT,lpRect,);,18,使用成员函数,CreateEllipicRgn,(),创建一个椭圆形区域,函数原型为:,BOOL,CreateEllipticRgn(int,x1,int y1,int x2,int y2);,使用成员函数,CreateEllipticRgnIndirect,(),间接创建一个椭圆形区域,函数原型为:,BOOL,CreateEllipticRgnIndirect(LPCRECT,lpRect,);,使用成员函数,CreatePolygonRgn,(),创建一个多边形区域,函数原型为:,BOOL,CreatePolygonRgn(LPPOINT,lpPoints,int,nCount,int,nMode,);,3,删除,CRgn,对象,使用完,CRgn,对象后,需要调用基类的成员函数,DeleteObject,(),释放,CRgn,对象所占资源。,4,常用区域操作函数,PtInRegion,(),CombineRgn,(),19,6.3 CDC,中的绘图操作,6.3.1,设置绘图模式,20,6.3.2,绘图函数,CDC,中的绘图函数有画线(直线、曲线),画几何图形(矩形、椭圆、多边形),图形填充,位图填充等。,1,画点,CPoint,GetCurrentPosition,()const;/,取得当前点的位置,CPoint,MoveTo(int,x,int,y);/,设置新的当前点位置,CPoint,MoveTo(POINT,point);/,设置新的当前点位置,21,2,画直线,可以使用,LineTo,(),绘制一条直线,函数原型如下:,BOOL,LineTo(int,x,int,y);,BOOL,LineTo(POINT,point);,3,画椭圆,可以使用,Ellipse(),绘制一个椭圆,函数原型如下:,BOOL,Ellipse(int,x1,int y1,int x2,int y2);,BOOL,Ellipse(LPCRECT,lpRect,);,4,画矩形,可以使用,Rectangle(),绘制一个矩形,函数原型如下:,BOOL,Rectangle(int,x1,int y1,int x2,int y2);,BOOL,Rectangle(LPCRECT,lpRect,);,22,6.3.3,输出文本,1,设置背景颜色,用户可以调用,CDC,成员函数,SetBkColor,(),来设置新的背景色:,virtual COLORREF,SetBkColor(COLORREF,crColor,);,2,设置背景模式,设置背景颜色后,需要使用,CDC,成员函数,SetBkMode,(),设置背景模式后,设置的背景颜色才能在输出时有效。,SetBkMode,(),原型如下:,int,SetBkMode(int,nBkMode,);,3,设置文本对齐方式,输出文本时,可以使用,SetTextAlign,(),设置文本的对齐方式,该函数的原型如下:,UINT,SetTextAlign(UINT,nFlags,);,23,4,设置文本颜色,设置文本颜色可以使用,SetTextColor,(),,该函数原型如下:,virtual COLORREF,SetTextColor(COLORREF,crColor,);,5,常用文本输出函数,(,1,),TextOut,(),(,2,),DrawText,(),(,3,),ExtTextOut,(),(,4,),TabbedTexOut,(),24,6.4,绘 制 时 钟,【,例,6.4】,本例通过绘制一个时钟来演示设备环境的获取和释放,画笔、画刷、字体等,GDI,对象的使用,以及文本的输出、背景模式和文本颜色的设置,。,25,在本例中,时钟的表盘通过绘制一个圆形来实现,表的时针、分针和秒针通过绘制不同宽度的直线实现,通过创建新字体实现表盘数字的绘制。,具体步骤,详见教材。,26,27,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:第6章图形设备接口与绘图1.ppt
    链接地址:https://www.zixin.com.cn/doc/13330296.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork