CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT

上传人:油条 文档编号:49095733 上传时间:2018-07-23 格式:PPT 页数:102 大小:379.50KB
返回 下载 相关 举报
CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT_第1页
第1页 / 共102页
CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT_第2页
第2页 / 共102页
CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT_第3页
第3页 / 共102页
CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT_第4页
第4页 / 共102页
CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT》由会员分享,可在线阅读,更多相关《CG04 VC++绘图程序设计 哈尔滨工业大学计算机图形学教学课件 PPT(102页珍藏版)》请在金锄头文库上搜索。

1、本章内容MFC上机操作步骤 基本绘图函数MFC上机操作步骤关于工具Visual C+ 6.0是目前使用极为广泛的可视化编程平台 。 使用VC+语言开发的图形,与使用Turbo C语言开发的图形相比,不仅可以显示真彩色 ,而且可以实现交互式绘图。Microsoft Foundation Class Library微软基类库MFC是以C+形式封装的Windows API(Application Program Interface),包含了一百多个已经定义好的常用类。 MFC的上机操作过程启动Microsoft Visual C+ 6.0 从【File】菜单中选择【New】命令,弹出 【New】对话

2、框,切换到【Projects】选项卡。 在左边窗口中选择MFC AppWizard(exe), 在右边的Projects name文本框中键入应用程序 名,这里输入Test,在Location文本框中出现用 于存放应用程序的根目录,这里设置为D:Test 。其余保持默认值。如图所示。单击【OK】按钮 。在对话框【MFC AppWizard-Step1】中,选 中Single Document单选按钮,其余保持默认值 ,如图所示。单击【Finish】按钮结束。完成上述步骤后,应用程序Test的框架 即被生成,出现程序工作区。如图所示。在工作区的【ClassView】面板中显示所 创建的类和成员函

3、数 在【Resource View】面板中显示所创建的 资源 在【FileView】面板中显示源程序文件 ,主要包括程序源文件(*.CPP) 、头文件 (*.h) 和资源文件(*.ico、*.bmp等) 从【ClassView】面板可以看出 CTestApp是应用的主函数类,用来处 理消息。 MFC中的数据是存储在CTestDoc类文档 中 结果的显示是在CTestView类中 文档类负责管理和维护数据本身 视图类负责处理用户鼠标和键盘的操 作全部展开 FileView面板后,显 示如图的界面内容后续的编程过程 中一般使用的是 CTestView类的 TestView.h头文件和 TestVi

4、ew.cpp源文件 。OnDraw(CDC* pDC)函数void CTestView:OnDraw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDC定义为CDC类的指针。 pDoc通过GetDocument()函数得到了指 向文档类CTestDoc的指针。OnDraw(CDC* pDC)函数void CTestView:OnDraw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); ASSERT_VALID(pDoc)函数使pDoc指针有

5、效 。使用pDC指针,可以对CDC类的成员函数进行 操作。 注意:OnDraw函数是由系统框架直接调用 的,程序一运行就会自动执行。!按钮点击工具条上的 “!”按钮,就可以直 接编译、运行程序 尽管未编写一句代码,但Test程序已经 形成一个可执行程序框架基本绘图函数在Windows平台上,应用程序的图形设 备接口(Graphics Device Interface, GDI)被抽象化为设备环境(Device Content,DC) 在微软基类库MFC中,CDC类是定义设 备上下文对象的基类,所有绘图函数都在 CDC基类中定义。CDC类结构和GDI对象 映射模式 CDC类的主要绘图成员函数 设

6、备环境的调用和释放 VC+绘制图形的几种方法CDC类结构和GDI对象1. CDC类CDC类有4个派生类CClientDC类显示器客户区设备上下文类 CClientDC只能在窗口的客户区(不 包括边框、标题栏、菜单栏以及状态栏 的空白区域)进行绘图 点(0,0)是客户区的左上角 其构造函数调用GetDC函数 其析构函数调用ReleaseDC函数CMetaFileDC类Windows图元文件设备上下文类 CMetaFileDC封装了在一个Windows 图元文件中绘图的方法 图元文件是一系列与设备无关的图 片的集合,由于它对图像的保存比像素 更精确,因而往往在要求较高的场合下 使用 例如,Auto

7、CAD中的图像保存等 。CPaintDC类是成员函数OnPaint中使用的显示器上下 文类 CPaintDC只在处理WM_PAINT消息中使用 ,用户一旦获得相关的CDC指针,就可以将它 当做任何设备环境(包括屏幕、打印机)的 指针来使用 CPaintDC类的构造函数会自动调用 CWnd:BeginPaint CPaintDC类的析构函数则会自动调用 CWnd:EndPaint CWindowDC类整个窗口区域的显示器设备上下文类, 包括客户区和非客户区 CWindowDC允许在窗口的任意位置中进行 绘图,点(0,0)指整个窗口的左上角 其构造函数调用GetWindowDC 其析构函数调用Re

8、leaseDC关于DC的一些示例1.HDCHDC hdc; hdc-=:GetDC(m_hWnd); MoveToEx(hdc,10,10,NULL); LineTo(hdc,20,20); :ReleaseDC(m_hWnd,hdc);2.CDCCDC *Pdc=GetDC(); pDC-MoveTo(10,10); pDC-LineTo(20,20); Pdc-ReleaseDC()3.CClientDCCClientDC dc(this); dc.MoveTo(10,10); dc.LineTo(20,20);4.CWindowDCCWindowDC dc(this); dc.MoveT

9、o(10,10); dc.LineTo(20,20);5.获取上级窗口CWindowDC dc(GetParent(); dc.MoveTo(0,0); dc.LineTo(50,50);5.获取桌面CWindowDC dc(GetParent(); dc.MoveTo(0,0); dc.LineTo(50,50);2. 常用绘图类常用绘图类常用绘图类CPoint类:存放点坐标(x,y)。 CRect类:存放矩形左上角顶点和右下角顶 点的坐标(top,left,right,bottom) Csize类:存放矩形的宽度和高度的坐标( cx,cy),其中cx为矩形的宽度,cy为矩形的 高度。3.

10、绘图工具类绘图工具类绘图工具类CGdiObject类:GDI绘图工具的基类,一般 不能直接使用。 CBitmap:封装了一个GDI位图,提供位图 操作的接口。 CBrush类:封装了GDI画刷,可以选作设备 上下文的当前画刷。画刷用于填充图形内部。绘图工具类CFont:封装了GDI字体,可以选作设备 上下文中的当前字体。 CPallette:封装了GDI调色板,提供应 用程序和显示器之间的颜色接口。 CPen:封装了GDI画笔,可以选作设备上 下文的当前画笔。画笔是用于绘制图形边界 线。映射模式把图形显示在屏幕坐标系中的过程称为映 射 根据映射模式的不同可以分为 逻辑坐标 设备坐标 逻辑坐标的

11、单位是米制尺度或其它与字体 相关的尺度 设备坐标的单位是像素映射模式模式代码坐标单位坐标系特征MM_TEXT一个像素设备坐标。屏幕左上角为坐标原 点,X轴向右,Y轴向下。MM_LOMETRIC0.1mm逻辑坐标。坐标原点位置可以自 由设置,X轴向右,Y轴向上。MM_HIMETRIC0.01mm逻辑坐标。坐标原点位置可以自 由设置,X轴向右,Y轴向上。MM_LOENGLISH0.01inch逻辑坐标。坐标原点位置可以自 由设置,X轴向右,Y轴向上。MM_HIENGLISH0.001inch逻辑坐标。坐标原点位置可以自 由设置,X轴向右,Y轴向上。映射模式模式代码坐标单位坐标系特征MM_TWIPS

12、1/440inch或 1/20点逻辑坐标。坐标原点位置可 以自由设置,X轴向右,Y 轴向上。MM_ISOTROPIC用户自定义, X轴和Y轴 比例相等逻辑坐标。坐标原点位置可 以自由设置,X轴和Y轴方 向自定义。MM_ANSIOTROPIC用户自定义, X轴和Y轴 比例独立设 置逻辑坐标。坐标原点位置可 以自由设置,X轴和Y轴方 向自定义。映射模式在缺省情况下,一般使用的是设备坐标 系MM_TEXT,坐标原点位于客户区的左上角, X轴水平向右,Y轴垂直向下,坐标基本单位 为一个像素。 1. 设置映射模式函数类属:CDC:SetMapMode 原型:virtual int SetMapMode(

13、int nMapMode ); 返回值:原映射模式。 参数说明:nMapMode是表2-1的模式代码。2. 设置窗口范围函数类属:CDC:SetWindowExt 原型:virtual CSize SetWindowExt ( int cx, int cy ); 返回值:原窗口范围的CSize对象。 参数说明:cx窗口x范围的逻辑坐标,cy 窗口y范围的逻辑坐标。3. 设置视区范围函数类属:CDC:SetViewportExt 原型:virtual CSize SetViewportExt( int cx, int cy ); 返回值:原视区范围的CSize对象。 参数说明:cx视区x范围的逻

14、辑坐标,cy 视区范围的逻辑坐标。4. 设置视区坐标原点函数类属:CDC:SetViewportOrg 原型:virtual CPoint SetViewportOrg( int x, int y ); 返回值:原视区原点的CPoint对象。 参数说明:参数x,y是视区的新原点坐标 。 CDC类的主要绘图成员函数 1. 绘制像素函数类属:CDC:SetPixel 原型:COLORREF SetPixel(int x,int y,COLORREF crColor ); 设置某像素点的RGB值1. 绘制像素函数参数说明:SetPixel 函数中,COLORREF是32 位颜色数据类型; 第一和第二

15、个参数x,y是像素点位置的逻辑 坐标值, 第三个参数crColor是像素点的颜色值, COLORREF型变量可以利用RGB(bRed,bGreen, bBlue)来指定相应的颜色值,每种颜色用一个字 节表示,可以被设定为0255之间的任意值,0代 表无色,255代表全色。 2. 获取像素颜色函数类属:CDC:GetPixel 原型:COLORREF GetPixel(int x,int y)const; 返回值:指定像素的RGB值。 参数说明:得到指定像素的RGB颜色值例4 在屏幕的(20,20)坐标位置处绘制一 个红色像素点。然后取出该像素点的颜色 ,在屏幕的(60,20)坐标处绘制一个相同

16、 颜色的像素点。 void CTestView:OnDraw(CDC* pDC) CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); COLORREF c; pDC-SetPixel(20,20,RGB(255,0,0); c=pDC-GetPixel(20,20); pDC-SetPixel(60,20,c); 语句:COLORREF c; 注释:变量c用于存放像素点的颜色值语句:pDC- SetPixel(20,20,RGB(255,0,0); 注释:在屏幕的(20,20)坐标位置处,绘 制一个红色的像素点语句: c=pDC-GetPixel(20,20); 注释: c保存该像素点

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号