第6讲利用CDC实现绘图程序讲解.pptVIP

  1. 1、本文档共90页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6讲利用CDC实现绘图程序讲解

6.4 Windows绘图工具 6.4.1 绘图工具的划分 6.4.2 使用画笔 6.4.3 使用画刷 6.4.4 使用库存工具 概要 VC绘图需要两个要素:设备描述表和基本绘图工具。设备描述表是由CDC类及其派生类来描述,它是一个画图的画布,提供绘图的场地和环境。画布一般是窗口的客户区,每个窗口CWnd对象都提供一个设备环境,在该环境中有一套默认的基本绘图工具。上一节讲的文本操作中,可以更改文字的字体,字体就是一种绘图工具。当设备环境所提供的默认的绘图工具不能满足我们的需求时,就需要更改默认绘图工具,达到绘制丰富多彩图形的目的。 6.4.1 绘图工具的划分 绘图工具,又称绘图对象,使用他们可以在Windows设备环境中绘制具有各种效果的图形。如果把设备描述表比作画布,程序员比作画家的话,那么绘图工具就是画家手中的画笔、画刷、调色板等。任何一个画家,不论他的技艺有多么高超(类似于程序员要掌握绘图原理),在没有任何绘图工具的情况下,都无法在画布上画图。 Windows的绘图工具包括画笔、画刷、字体、位图、调色板和区域。在MFC中这些绘图工具被封装到相应的类中。这些绘图工具中,字体在文本操作中已讲,该节中主要讲解其它的几类绘图工具,其中没有讲调色板和位图,自己查阅相关资料进行学习。 6.4.2 使用画笔 画笔是最简单的一种绘图工具,同时也是最重要的一种绘图对象。在现实世界中,可以用不同的笔产生不同的线。这正如绘图用的彩笔、不同颜色笔产生不同颜色的线。Windows也是利用这种面向对象的描述事物的方法,把笔作为一个对象,和现实世界一样,不同的笔产生不同的线。 1. 画笔类Cpen CPen对象封装了Windows GDI笔,并提供与CPen对象一起工作的几种方法。 6.4.2续1 2.画笔工具的操作步骤 (1)声明CPen对象。 (2)初始化画笔。 通过调用CreatePen成员函数可以初始化笔,该函数的原型为:BOOL CreatePen( int nPenStyle, int nWidth, COLORREF crColor ); (3)将新建的画笔对象选进设备场景中,同时保存原画笔对象的指针: pOldPen=pDC-SelectObject(pen); (4)调用绘图函数生成图形。 (5)选择设备场景的原有笔对象。 6.4.2续2 3.画笔工具的操作实例 【例6-4】一个演示画笔的例子。首先利用MFC AppWizard(exe)创建一个新工程,工程的名字为PenTest,除了应用程序的类型选为单文档模式外,向导的每个操作步骤都采用缺省的。 (1) 编辑视图类CPenTestView的虚函数OnDraw,实现画笔工具的操作演示。 (2)程序运行结果如图6.4所示 void CPenTestView::OnDraw(CDC* pDC) { CPenTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); _int8 i; CPen* pOldPen; for(i=0;i7;i++) //用不同风格的笔绘图 { CPen NewPen; //声明一个笔对象 if( NewPen.CreatePen(i, 1, RGB(0,0,0))) { pOldPen = pDC-SelectObject( NewPen ); pDC-MoveTo(60,60+i*30); pDC-LineTo(200,60+i*30); //用新创建的笔画直线 pDC-SelectObject( pOldPen ); //恢复设备描述表中原有笔 } else { AfxMessageBox(不能创建笔!); //给出错误提示 return ; } } pDC-TextOut(60,60+i*30,不同风格的笔); //设置颜色表 struct tagColor { int r,g,b; } color[6]= { {255,0,0},{0,255,0},{0,0,255},{255,255,0},{255,0,255},{0,255,255} }; for(i=5;i=0;i--) //用不同颜色笔画圆 { CPen NewPen; //声名一个笔对象 if( NewPen.CreatePen( PS_SOLID, 3, RGB(color[i].r,color[i].g,color[i].b) ) ) { pOldPen = pDC-Sele

文档评论(0)

4477704 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档