计算机图形学实验指导书(vc++版)

合集下载

《计算机图形学》实验指导书

《计算机图形学》实验指导书

计算机图形学实验指导书袁科计算机技术实验中心目录实验一实现DDA、中点画线算法和Bresenham画线算法 (24)实验二实现Bezier曲线 (25)实验三实现B样条曲线 (26)实验四实现多边形填充的边界标志算法 (27)实验五实现裁剪多边形的Cohen-Sutherland算法 (28)实验六二维图形的基本几何变换 (30)实验七画图软件的编制 (31)实验一实现DDA、中点画线算法和Bresenham画线算法【实验目的】1、掌握直线的多种生成算法;2、掌握二维图形显示原理。

【实验环境】VC++6.0/ BC【实验性质及学时】验证性实验,2学时,必做实验【实验内容】利用任意的一个实验环境,编制源程序,分别实现直线的三种生成算法,即数字微分法(DDA)、中点画线法以及Bresenham画线算法。

【实验原理】1、数字微分法(Digital Differential Analyzer,DDA)算法思想:基于直线的微分方程来生成直线。

ε=1/max(|△x|,|△y|)max(|△x|,|△y|)=|△x|,即|k|≤1 的情况:max(|△x|,|△y|)=|△y|,此时|k|≥1:2、中点画线法算法思想:每次在最大位移方向上走一步,另一方向是否走步取决于误差项的判断。

3、Bresenham画线算法算法思想:其基本思想同中点算法一样,即每次在最大位移方向上走一步,而另一个方向是否走步取决于误差项的判断。

【实验要求】1.上交源程序;2.上交实验报告,实验报告内容如下:(1) 实验名称(2) 实验目的(3) 算法实现的设计方法及程序流程图(4) 程序结果分析【分析与思考】(1) 上述所阐述的三个算法,其基本算法只能适用于直线的斜率(|K|<=1) 的情形,如何将上述算法进行推广,使其能够处理任意斜率的直线?(2) 计算机显示屏幕的坐标圆心在哪里,与我们平时的习惯有什么差异,如何协调二者?实验二 实现Bezier 曲线【实验目的】1、掌握Bezier 曲线的定义;2、能编程实现N 次Bezier 曲线的绘制与显示。

计算机图形学实验

计算机图形学实验

实验三MFC画直线最近自己在学习如何在VC 6.0 开发环境下的使用MFC AppWizard(exe)来绘画一条直线,虽然比较简单,通过这样的练习可以帮助你熟悉MFC的开发环境以及其中的消息传递机制,希望对于像我一样初入MFC图形绘制学习的人有帮助第一步:构建MFC窗体打开Visual C++ 6.0编译器新建→工程→MFC AppWizard(exe),工程名以DrawLine为例,然后确定。

为了方便,在MFC应用程序向导—步骤1当中选择“单文档”,其余所有的步骤都为默认值,直接“完成”。

这样一个简单的MFC 窗体就构建好了,自己不妨Compile—Build—BuildExecute一下。

第二步:编辑菜单项选择ResourceView视窗展开Menu文件夹,左键双击IDR_DRAWLITYPE,右边就会出现菜单图形编辑界面,为了简化,我们只在添加帮助→DrawLine功能选择项。

双击空白会弹出“菜单项目属性”对话框。

ID:ID_DRAW_LINE;标明:DrawLine(&D),其它的为缺省。

第三步:建立消息命令如果此时运行该程序,你会发现帮助—DrawLine的功能选项是灰色的,原因就在于我们还没有添加该功能的消息命令相应函数。

通过“查看—Message Maps—Project:DrawLine—Class name:CDrawLineView—Object IDs:ID_DRAW_LINE—选定COMMAND—Add Function…”,其它为默认,最后确定完成。

现在如果再重新运行该程序的话,会发现原来的灰色已经消除了。

第四步:添加鼠标消息响应打开ClassView视窗,右键选定CDrawLineView,选择Add Windows Messsage Handler会弹出对话框,完成CDrawLineView类的WM_LBUTTONDOWN、WM_MOUSEMOVE、WM_LBUTTONUP三个Windows消息事件的新建。

计算机图形学实验指导书

计算机图形学实验指导书
hwndcreatewindowlpctstripszclassnamelpctstripsztitle窗口标题名dworddwstyle创建窗口的样式窗口宽度和度高该窗口的父窗口句柄窗口主菜单句柄创建窗口的应用程序当前彳u柄指向一个传递给窗口的参数值的指针常用窗口样式说明wsborder售健一带边框的窗口ws创建一带标题栏的窗口wsjvscroll健一带垂直滚动条的窗口wsmaximizebox创健一带量大化框的窗口wsmaximize仓健一最大尺寸的窗口wsminimizebox创建一带量小化框的窗口wsminimize包健一最小尺寸的窗口wsoverlapped色健一带边框和标题的窗口wsoverlappewindow健一带边框
2
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力通根1保据过护生管高产线中工敷资艺设料高技试中术卷0资配不料置仅试技可卷术以要是解求指决,机吊对组顶电在层气进配设行置备继不进电规行保范空护高载高中与中资带资料负料试荷试卷下卷问高总题中2体2资配,料置而试时且卷,可调需保控要障试在各验最类;大管对限路设度习备内题进来到行确位调保。整机在使组管其高路在中敷正资设常料过工试程况1卷下中安与,全过要,度加并工强且作看尽下护可1都能关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编.工写保况复护进杂层行设防自备腐动与跨处装接理置地,高线尤中弯其资曲要料半避试径免卷标错调高误试等高方,中案要资,求料编技试5写术卷、重交保电要底护气设。装设备管置备4高线动调、中敷作试电资设,高气料技并中课3试术且资件、卷中拒料中管试包绝试调路验含动卷试敷方线作技设案槽,术技以、来术及管避系架免统等不启多必动项要方高案式中;,资对为料整解试套决卷启高突动中然过语停程文机中电。高气因中课此资件,料中电试管力卷壁高电薄中气、资设接料备口试进不卷行严保调等护试问装工题置作,调并合试且理技进利术行用,过管要关线求运敷电行设力高技保中术护资。装料线置试缆做卷敷到技设准术原确指则灵导:活。在。对分对于线于调盒差试处动过,保程当护中不装高同置中电高资压中料回资试路料卷交试技叉卷术时调问,试题应技,采术作用是为金指调属发试隔电人板机员进一,行变需隔压要开器在处组事理在前;发掌同生握一内图线部纸槽故资内障料,时、强,设电需备回要制路进造须行厂同外家时部出切电具断源高习高中题中资电资料源料试,试卷线卷试缆切验敷除报设从告完而与毕采相,用关要高技进中术行资资检料料查试,和卷并检主且测要了处保解理护现。装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

计算机图形学实验指导书

计算机图形学实验指导书

《计算机图形学》实验指导书华南农业大学信息学院信息学院章晓华主编目录第一部分《计算机图形学》实验要求 (1)一、《计算机图形学》实验教学概述 (1)1、实验教学的基本情况 (1)2、实验教学的指导思想和教学目的 (1)3、实验项目表 (1)二、《计算机图形学》实验教学规范 (2)1、实验课的意义 (2)2、实验步骤 (2)3、实验报告(文档)规范 (2)4、实验考核 (3)第二部分实验内容 (4)实验一图元的生成算法 (4)实验二多边形填充 (7)实验三二维图形变换 (14)实验四直线Sutherland算法的实现 (22)实验五二维图形系统 (26)第一部分《计算机图形学》实验要求一、《计算机图形学》实验教学概述1、实验教学的基本情况课程总学时数:48学时;课程总学分:3学分实验总学时:16适用专业:信息学院计算机科学与技术、软件工程、网络工程专业,软件学院软件工程专业考核方式及方法:实际操作+程序运行+实验报告。

实验成绩、考勤及书面作业成绩组成平时成绩。

平时成绩占课程总成绩30%,考试成绩占课程总成绩70%。

成绩评定:在参考“难度系数”的基础上>=90——选做内容/必做内容功能完善,编程风格好,人机接口界面好;80~90——必做内容功能完善,完成部分选做内容,编程风格好,人机接口界面良好;70~80——完成必做内容,编程风格良好;60~70——能完成必做内容;<60——未按时完成必做内容,或者抄袭(含雷同者)。

2、实验教学的指导思想和教学目的1)指导思想:掌握计算机图形的生成技术和生成各种平面图形和简单立体图形的基本算法,掌握图形填充、裁剪、图形变换及图形消隐等计算机图形处理的基本方法,初步掌握用C++语言编写基本图形生成和处理程序的方法,为后续的课程奠定良好的基础。

2)教学目的:为了使学生在课程学习的同时,通过在具体的编程环境中的实际操作,对计算机图形学的基本概念和方法能有一个初步的了解,使学生加深了解和更好地掌握《计算机图形学》课程教学大纲要求的内容,并培养学生动手编程解决实际问题的能力,训练学生分析问题和调试程序的能力,锻炼学生撰写科技实验论文的能力。

《计算机图形学》 课程实验指导(1)

《计算机图形学》 课程实验指导(1)

《计算机图形学》课程实验指导一.实验总体方案1.教学目标与基本要求(1)掌握教材所介绍的图形算法的原理;(2)掌握通过具体的平台实现图形算法的方法,培养相应能力;(3)通过实验培养具有开发一个基本图形软件包的能力。

2. 实验平台与考核实验主要结合OpenGL设计程序实现各种课堂教学中讲过的图形算法为主。

程序设计语言主要以C/C++语言为主,开发平台为Visual C++。

每次实验前完成实验报告的实验目的、实验内容、实验原理、实验代码四部分并接受抽查,实验完成后完成实验结果、实验体会两部分,本次实验课结束前提交。

3. 实验步骤(1) 预习教材与实验指导相关的算法理论及原理;(2) 仿照教材与实验指导提供的算法,利用VC+OpenGL进行实现;(3) 调试、编译、运行程序,运行通过后,可考虑对程序进行修改或改进。

二. 实验具体方案实验预备知识OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。

1)与C语言紧密结合:OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的。

如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单;2)强大的可移植性:微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统。

而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机、各种专业计算机(如:医疗用显示设备)上都有应用。

并且,OpenGL 的基本命令都做到了硬件无关,甚至是平台无关;3) 高性能的图形渲染:OpenGL是一个工业标准,它的技术紧跟时代,现今各个显卡厂家无一不对OpenGL提供强力支持,激烈的竞争中使得OpenGL性能一直领先。

总之,OpenGL是一个非常优秀的图形软件接口。

OpenGL官方网站(英文)下面将对Windows下的OpenGL编程进行简单介绍。

《计算机图形学》课内实验指导书

《计算机图形学》课内实验指导书

“计算机图形学”课内实验指导书杨新宇西安交通大学计算机科学与技术系课程基本情况实验学时:8适用专业:计算机专业本科生先修课程:数据结构,C语言程序设计开课学院:电子与信息工程学院开课学期:第七学期参考书:·DONALD HEARN & M.PAULINE BAKER著,蔡士杰、吴春鎔、孙正兴等译,《计算机图形学(第二版)》,PRENTICE HALL&电子工业出版社,2002年·David F. Rogers主编,《Procedural Elements for Computer Graphics》,机械工业出版社,2002年课程简介本实验是对《计算机图形学》课的课内实践,完成基本几何图形(线、圆、椭圆)的绘制。

教学基本要求与成绩的考核与评定办法一、实验课教学基本要求1.根据题目要求的功能,独立完成,培养自己独立思考、独立解决问题的能力;2.同学之间可以讨论研究问题,互相交流经验体会,但不可照抄;3.记录保存好自己的设计资料数据,调试完成后要写出详细设计报告;4.任务完成后老师要逐个检查验收,并结合实际情况提问答辩。

二、实验成绩的考核与评定办法在实验过程中考察动手能力,依据提交的设计报告、结合验收的实际情况综合打分。

实验项目名称:直线的DDA算法实验目的:1.掌握直线的DDA算法的编程实现。

实验环境:Windows操作系统、VC编程环境。

实验要求:以绘图区域中心为(0,0)点。

要求能够输入任意两个端点的坐标。

实验内容提要:参考《计算机图形学基础》课程中的相关算法流程。

实验类型:设计性。

实验项目名称:直线的Bresenham画线算法实验目的:1.掌握直线的Bresenham算法的编程实现。

实验环境:Windows操作系统、VC编程环境。

实验要求:以绘图区域中心为(0,0)点。

要求能够输入任意两个端点的坐标。

实验内容提要:参考《计算机图形学基础》课程中的相关算法流程。

计算机图形学基础实验指导书

计算机图形学基础实验指导书

计算机图形学基础实验指导书目录实验一直线的生成 ............................................................... -..2.-实验二圆弧及椭圆弧的生成........................................................ -..3 -实验三多边形的区域填充 ......................................................... - (4)-实验四二维几何变换 ............................................................. -..5.-实验五裁剪算法 ................................................................. -..6.-实验六三维图形变换 ............................................................. -..7.-实验七BEZIER 曲线生成......................................................... -..8.-实验八交互式绘图技术实现........................................................ -..10-实验一直线的生成一、实验目的掌握几种直线生成算法的比较,特别是Bresenham 直线生成算法二、实验环境实验设备:计算机实验使用的语言: C 或Visual C++ 、OpenGL三、实验内容用不同的生成算法在屏幕上绘制出直线的图形,对不同的算法可设置不同的线形或颜色表示区别。

四、实验步骤直线Bresenham 生成算法思想如下1)画点(x i, y i), dx=x2-x i, dy=y2-y i,计算误差初值P i=2dy-dx , i=1;2)求直线下一点位置x i+i=x i+i 如果P i>0,贝U y i+i=y i+i,否则y i+i=y i;3)画点(x i+i ,y i+i );4)求下一个误差P i+i 点,如果P i>0,贝U P i+i=P i+2dy-2dx,否则P i+i=P i+2dy;i=i+i ,如果i<dx+i 则转步骤2,否则结束操作。

计算机图形学实验大纲

计算机图形学实验大纲

《计算机图形学基础教程(Visual C++版)》实验大纲
一、实验目的与要求:
实验目的:巩固学生对计算机图形学的直线扫描转换原理、有效边表填充原理、三维透视投影原理、ZBuffer深度缓冲消隐原理和真实感图形生成原理的理解,增加学生对真实感图形生成算法的感性认识,强化训练学生使用Visual C++的MFC编写相关图形类的技能。

此前,课堂上已经完成《计算机图形学实践教程(Visual C++版)》的43个验证性实验的讲解,在此基础上,要求学生能综合使用全部教学内容完成综合性实验。

实验要求:要求学生在实验前了解综合性实验的目的和要求,观察实验效果图。

在实验中认真理解每个类的结构,通过搭积木的方式完成实验任务。

实验结束后按要求整理相关类的源程序,撰写实验报告,尤其需要对难点和重点进行详细说明。

二、实验项目与提要:
三、成绩考核方法:
本实验与计算机图形学课程同步开设,成绩占期末总成绩的20%~40%。

四、本课程与其他课程的联系和分工
先修课程:高等数学、线性代数、MFC程序设计语言、数据结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验指导书刘文涛2013目录第一章图形学实验环境和要求 (4)1.1 VC++实验环境 (4)1.1.1 基本环境 (4)1.1.1 开发图形程序的一般流程 (7)1.1.3 基本绘图函数介绍 (11)1.2 OpenGL (22)1.2.1 OpenGL介绍 (22)1.2.2 OpenGL开发环境 (24)1.2.3 OpenGL函数 (24)1.2.4 回调函数 (25)1.2.4 一个典型OpenGL例程 (26)1.3 实验要求 (29)1.3.1 实验内容 (29)1.3.2 实验方法 (29)1.3.3 实验效果 (30)第二章直线生成算法 (30)2.1 实验原理 (30)2.1.1 DDA算法 (30)2.1.2 Bresenham算法 (30)2.2 实验内容 (30)2.3 参考示例程序 (30)第三章圆和椭圆生成算法 (32)3.1 实验原理 (32)3.2 实验内容 (32)3.3 参考示例程序1 (32)3.4 参考示例程序2 (33)第四章裁剪算法 (35)4.1 实验原理 (35)4.2 实验内容 (35)4.3 示例程序 (35)4.3.1 参考例子1 (35)4.3.2参考例子2 (38)第五章二维变换 (40)5.1 实验原理 (40)5.2 实验内容 (40)5.3 示例程序 (40)5.3.1参考例子1 (40)第六章三维变换 (44)6.1 实验原理: (44)6.2 实验内容 (45)6.3示例程序 (45)第七章填充算法 (47)7.1 实验原理: (47)7.2 实验内容 (47)7.3示例程序 (47)第八章曲线曲面 (50)8.1 实验原理 (50)8.2 实验内容 (50)8.3示例程序 (51)8.3.1 参考例子(1) (51)8.3.2 参考例子(2) (52)8.3.3 参考例子(3) (54)8.3.4 参考例子(4) (56)第九章真实感图形绘制 (59)9.1 实验原理 (59)9.2 实验内容 (59)9.3示例程序 (59)9.3.1参考例子(1) (59)9.3.2参考例子(2) (61)9.3.3参考例子(3) (63)第十章动画 (66)10.1 实验原理 (66)10.2 实验内容 (66)10.3示例程序 (66)10.3.1 参考例子 (66)参考文献: (72)第一章图形学实验基础1.1 VC++实验环境1.1.1 基本环境Microsoft Visual C++ 6.0 是微软推出的功能强大的可视化C/C++语言编译器,运行在Windows 9x/2000/NT等平台上,可以建立32位应用程序。

运用这个强大的工具,可以很快地建立具有图形界面、能够运行于Windows操作系统上、有很复杂的功能的程序。

在VC 中提供了Windows编程所需的Windows API,以及建立在其基础之上的类库--Microsoft Foundation Classes(MFC),前者是编写32位Windows程序所必需的应用程序接口,而后者提供了建立较大规模软件的解决方案,正逐渐成为许多C++编译器进行Windows软件开发的工业标准。

另外,Visual C++还提供了可视化的编辑工具,使无论是源代码的编辑,还是应用程序界面设计,都变得十分简单。

VC还具有强大的Debug功能,对于调试程序来说,使用VC的Debug工具将使工作量大大降低。

而在其提供的各种功能中,与图形学直接相关的部分,是其提供的设备无关性和丰富的绘图功能。

Windows是图形界面的操作系统,Windows程序可以使用系统提供的图形设备界面(Graphics Device Interface,GDI)绘制比Turbo C中美观、丰富得多的图形,而且其实现十分的简单。

另外,Visual C++中还提供了对OpenGL图形编程的支持,可以简单快速的实现3维场景的渲染,为其加上光照、纹理、雾效等等。

后面还要详细介绍OpenGL相关内容。

在Windows这样一个图形界面操作系统中,图形操作是十分重要的。

图形是Windows的主体。

所有的信息,包括文本,最终都是由图形来实现的。

在Windows程序中,并不是把图形直接画到硬件上去,而是使用一个与硬件无关的设备环境来表示逻辑的设备。

在绘图工作开始之前,必须申请一个设备环境。

Win32 API提供了4种设备环境:显示器环境:支持图形在视频显示器上绘制信息环境:用于检索设备数据内存环境:支持在位图上进行图形操作打印机环境:支持在打印机或绘图仪上进行图形操作Windows体系结构的一个重要组件是图形设备界面(Graphics Device Interface,GDI)。

GDI为Windows提供了所有的基本绘图函数。

在Windows的GDI函数中,使用设备环境来作为一个参数。

GDI通过调用相应设备的驱动程序来响应Windows绘图函数的调用。

这种机制实现了硬件无关性,即无需自己编写底层驱动程序代码,因为Windows本身已经包含了这些驱动程序。

Microsoft基础类库(Microsoft Foundation Classes,MFC)是专门用来为Windows开发C++图形界面应用程序的类库。

它是随着面向对象的编程技术的产生而产生的。

Windows API是一种过程接口,当面向对象的编程技术出现之后,就需要为Win32程序建立一种面向对象的接口。

1992年,Microsoft公司开发了面向对象的应用程序框架(Application Frameworks,AFX),后来演变成了MFC。

实际上,MFC的内部大部分仍然是通过Windows API 来实现的。

使用MFC提供的基于对话框程序的模版,我们可以迅速建立一个适于绘图而且具有较好的交互性的应用程序框架。

图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏幕输出。

GDI负责Windows的所有图形输出,包括屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面。

三种图形输出类型应用程序可以使用GDI创建三种类型的图形输出:矢量输出、光栅图形输出和文本输出。

矢量图形输出矢量图形输出指的是创建线条和填充图形,包括点、直线、曲线、多边形、扇形和矩形的绘制。

光栅输出光栅图形的输出是指光栅图形函数对以位图形式存储的数据进行操作,它包括各种位图和图标的输出。

在屏幕上表现为对若干行和列的像素的操作,在打印机上则是若干行和列的点阵的输出。

光栅图形输出的优点是速度很快,它是直接从内存到显存的拷贝操作。

缺点是需要额外的内存空间。

Windows在绘制界面时使用了大量的光栅输出。

文本输出与DOS字符方式下的输出不同,Windows是按图形方式输出的。

这样,在输出文本时,必须以逻辑坐标为单位计算文本的输出位置,而不是象DOS下以文本行为单位输出文本。

这比DOS下的文本输出要难一些。

但是,按图形方式输出文本也给文本输出带来很大的灵活性。

用户可以通过调用各种GDI函数,制造出各种文本输出效果,包括加粗、斜体、设置颜色等。

Windows还提供了一种TrueType(写真字体)。

TrueType字体用一组直线和曲线命令及一些参数来描述字体的轮廓。

Windows可以通过参数来调整直线的长度和曲线的形状,从而实现对字体的自由缩放。

介绍MFC中与GDI有关的类:为了支持GDI绘图,MFC提供了两种重要的类:设备上下文类,用于设置绘图属性和绘制图形;绘图对象类,封装了各种GDI绘图对象,包括画笔、刷子、字体、位图、调色板和区域。

1)设备上下文类设备上下文类包括CDC和它的派生类CClientDC、CPaintDC、CWindowDC、CMetaFileDC。

CDC是设备上下文类的基类,除了一般的窗口显示外,还用于基于桌面的全屏幕绘制和非屏幕显示的打印机输出。

CDC类封装了所有图形输出函数,包括矢量、光栅和文本输出。

CClientDC(客户区设备上下文)用于客户区的输出,它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。

一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它。

用法是:CClientDC dc(this);//this一般指向本窗口或当前活动视图dc.TextOut(10,10,str,str.GetLength());//利用dc输出文本,如果是在CScrollView中使用,还要注意调//用OnPrepareDC(&dc)调整设备上下文的坐标。

CPaintDC用于响应窗口重绘消息(WM_PAINT)是的绘图输出。

CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。

EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。

因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。

CPaintDC也只能用在WM_PAINT消息处理之中。

CWindowDC用于窗口客户区和非客户区(包括窗口边框、标题栏、控制按钮等)的绘制。

除非要自己绘制窗口边框和按钮(如一些CD播放程序等),否则一般不用它。

CMetaFileDC专门用于图元文件的绘制。

图元文件记录一组GDI命令,可以通过这一组GDI命令重建图形输出。

使用CMetaFileDC时,所有的图形输出命令会自动记录到一个与CMetaFileDC相关的图元文件中。

2)图形对象类图形对象类包括CGdiObject、画笔、刷子、字体、位图、调色板、区域等。

CGdiObject 是图形对象类的基类,但该类不能直接为应用程序所使用。

要使用GDI对象,必须使用它的派生类:画笔、刷子、字体、位图、区域等等。

使用图形对象要注意两点:1.同其他MFC对象一样,GDI对象的创建也要分为两步:第一步,是定义一个GDI绘图对象类的实例;第二步调用该对象的创建方法真正创建对象。

2.创建对象:使用该对象,首先要调用CDC::SelectObject()将它选入到设备上下文中,同时保存原来的设置到一个GDI对象指针比如说pOldObject中。

在使用完后,再用SelectObject(pOldObject)恢复原来的设置。

但是,如果该设备上下文是用户自己创建的,则不必恢复原来设置,因为框架会在该设备上下文生存期结束时删除该设备上下文,同时也就删除了原来存放于该设备上下文中的绘图对象设置。

下面介绍各种对象的用法:画笔(CPen):封装GDI画笔,可被选中设备上下文中当前所用得笔。

相关文档
最新文档