第3章 MFC绘图基础
- 格式:ppt
- 大小:646.50 KB
- 文档页数:92
一、绘制线条1、新建MFC单文档工程Draw。
2、为CDrawView类添加CPoint类型的成员变量m_ptOrigin,将其访问权限设置为Private。
3、添加WM_LBUTTONDOWN的消息响应函数,该函数初始化m_ptOrigin变量m_ptOrigin=point。
4、添加WM_LBUTTONUP的消息响应函数void CDrawView::OnLButtonUp(UINT nFlags, CPoint point),在该函数里可添加如下各种代码实现绘图:(1)、利用SDK全局函数实现画线功能:HDC hdc;hdc=::GetDC(m_hWnd); //获得窗口的设备描述表MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL); //移动到线条的起点LineTo(hdc,point.x,point.y); //画线::ReleaseDC(m_hWnd,hdc);//释放设备描述表知识点:所有派生于CWnd类的子类都拥有m_hWnd这一成员变量,m_hWnd被定义为HWND类型,用于保存当前窗口的句柄,该成员变量具有public的访问权限。
(2)、利用MFC的CDC类实现画线功能:CDC* pDC=GetDC();pDC->MoveTo(m_ptOrigin);pDC->LineTo(point);ReleaseDC(pDC);知识点:MFC提供了设备描述表的封装类CDC,该类封装了所有与绘图相关的操作。
该类提供了一个数据成员m_hDC,用来保存与CDC类相关的DC句柄(3)、利用MFC的CClientDC类实现画线功能:CClientDC dc(this);//dc(GetParent())可获得父窗口的DCdc.MoveTo(m_ptOrigin);dc.LineTo(point);知识点:CClientDC派生于CDC类,当一个CClientDC对象在构造时,它在内部会调用GetDC 函数,在这个CClientDC对象析构时,它会调用ReleaseDC函数。
第二章MFC交互绘图基础在上一章我们所创建的应用程序中,通过添加的菜单项实现了简单的用户和应用程序的交互。
用户可以通过选择菜单项,定义使用的画笔和画刷,并通过选择菜单项执行相应的绘图代码来看绘制的图形。
但是该应用程序有很多缺点,比如绘制的图形有限,想要绘制新的图形必须修改代码;通过菜单处理函数执行的绘图代码因为没有将图形的信息存储起来,导致图形在窗口进行视图重画时不能够正确显示等等。
通常情况下,用户需要使用更灵活的方式来绘制图形。
比如像Windows中的“画图”程序一样,用户使用鼠标绘制图形,可以更灵活方便的设置绘图使用的画笔和画刷的类型,并且希望绘制完的图形可以保存起来,以后可以再次打开以前所绘制的图形并进行编辑。
本章将以编写一个简单的绘图应用程序为例,介绍如何在MFC中实现鼠标绘图,如何定义图元的结构以保证应用程序可以正确的重画用户绘制的图形,如何选择和编辑已有的图形,如何保存图形到永久存储介质中等等的编程方法。
这个简单的绘图应用程序将实现以下基本功能:用户使用鼠标绘制图形;通过对话框设置绘制图形使用的线型和颜色以及填充封闭区域的模式和颜色;用户可以选择已经绘制的图形,并可以对该图形进行编辑;可以保存绘制完的图形到永久存储介质(这里是硬盘)中,以便以后可以读取以前绘制的图形,并再次进行编辑。
2.1创建工具条创建一个新的MFC项目,项目名称为DrawMap。
创建该项目时各步的设置与上一章中创建DrawTest项目时相同,只是在“MFC AppWizard – Step 4 of 6”对话框中不选择Printing and print preview复选框。
在上一章的应用程序中,用户需要通过选择菜单项来选择要执行的功能。
当菜单项的层数比较多的时候,用户需要点击的次数较多。
对于一些常用的功能,用户会希望能够更容易的选择到,此时就可以使用工具条。
对于本章中要创建的绘图应用程序来说,绘图功能是常用功能,所以可以将这些功能的选择做成工具条。
MFC图形绘制1 、Windows应用程序概述1、设备环境类CDC设备环境是由Windows保存的一个数据结构,该结构包含应用程序向设备输出时所需要的信息,例如:图形是在屏幕上显示还是通过打印机输出。
为了能让用户使用一些特殊的设备环境,基类CDC还派生了以下各类:(1)CPaintDC类,此类比较特殊,它的构造函数和析构函数都是针对OnPaint进行的。
用户一旦获得相关的CDC指针,就可以将它当做任何设备环境(包括屏幕、打印机)指针来使用,CPaintDC类的构造函数会自动调用BeginPaint,而它的析构函数则会自动调用EndPaint。
(2)CClientDCCClientDC只能在窗口的客户区(不包括边框、标题栏、选单栏以及状态栏)进行绘图,点(0,0)通常指的是客户区的左上角。
其构造函数调用GetDC,析构函数调用ReleaseDC 函数用法是:CClientDC dc(this);;//this一般指向本窗口或当前活动视图dc.TextOut(10,10,str,str.GetLength());(3)CWindowDC•允许在窗口的任意位置中进行绘图,点(0,0)指整个窗口的左上角。
其构造函数调用GetWindowDC,析构函数调用ReleaseDC函数。
•Windows为设备环境提供了各种各样的绘图工具,例如:画笔、画刷、字体等。
MFC封装了这些工具,并提供相应的类来作为应用程序的图形设备接口(GDI,Graphics Device Interface),这些类有一个共同的抽象基类CGdiObject,如下所示:类名说明:•CBitmap“位图”是一种位矩阵,每一个显示像素都对应于其中的一个或多个位,用户可以利用位图来表示图象,也可以利用它来创建画刷。
•CBrush“画刷”定义了一种位图形式的像素,利用它可对区域内部填充颜色或样式。
•CFont“字体”是一种具有某种风格和尺寸的所有字符的完整集合,它常常被当做资源存于磁盘中,其中有一些还依赖于某种设备。
mfc 画图课程设计一、教学目标本课程旨在通过MFC画图的学习,让学生掌握以下知识目标:1. 理解MFC的基本概念和原理;2. 掌握MFC的基本绘图方法;3. 了解MFC绘图的应用场景。
技能目标:1. 能够运用MFC进行简单的图形绘制;2. 能够通过MFC实现图形的基本操作;3. 能够运用MFC解决绘图相关问题。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情;2. 培养学生独立思考和解决问题的能力;3. 培养学生团队协作和交流的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1. MFC的基本概念和原理;2. MFC 的基本绘图方法;3. MFC绘图的应用场景。
详细的教学大纲如下:第1周:MFC的基本概念和原理1.1 MFC的定义和发展历程1.2 MFC的基本组成和架构1.3 MFC的优点和缺点第2周:MFC的基本绘图方法2.1 MFC绘图环境的基本操作2.2 MFC绘图工具的使用2.3 MFC绘图方法的具体实现第3周:MFC绘图的应用场景3.1 MFC绘图在实际项目中的应用3.2 MFC绘图在解决实际问题中的优势3.3 MFC绘图在其他领域的拓展三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:通过讲解MFC的基本概念、原理和绘图方法,让学生掌握相关知识。
2.案例分析法:通过分析实际项目中的应用案例,让学生了解MFC绘图在实际场景中的应用。
3.实验法:让学生动手实践,亲自编写代码,绘制图形,提高学生的实际操作能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:《MFC画图教程》2.参考书:《MFC编程入门》、《MFC实例解析》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境(如Visual Studio)五、教学评估本课程的评估方式将包括以下几个方面:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的30%。
MFC画图程序步骤MFC(Microsoft Foundation Class)是一种用于开辟Windows应用程序的C++类库。
在MFC中,我们可以使用GDI(Graphics Device Interface)来创建和操作图形。
下面是使用MFC创建一个简单的画图程序的步骤。
步骤1:创建一个新的MFC项目首先,打开Visual Studio并选择创建一个新的项目。
在项目类型中,选择Visual C++ -> MFC,然后选择MFC应用程序类型。
输入项目名称并选择保存的位置。
在应用程序类型中,选择“单文档”或者“多文档”视图,具体根据你的需求而定。
点击“确定”按钮创建项目。
步骤2:设计用户界面在MFC应用程序中,用户界面是通过对话框资源来设计的。
在资源视图中,双击IDD_DIALOG(或者其他对话框资源)以打开对话框编辑器。
在对话框编辑器中,你可以添加按钮、文本框、菜单等控件来设计你的用户界面。
在画图程序中,你可以添加一个画布控件来显示绘制的图形。
步骤3:添加绘图功能在MFC中,你可以使用GDI来进行绘图操作。
打开你的对话框类的头文件(例如,CMyDialog.h),添加以下头文件引用:#include <afxwin.h>#include <afxext.h>#include <afxdisp.h>在对话框类的源文件(例如,CMyDialog.cpp)中,添加以下代码来处理绘图操作:```void CMyDialog::OnPaint(){CPaintDC dc(this); // 用于绘制的设备上下文// 在这里进行绘图操作dc.Rectangle(100, 100, 200, 200); // 绘制一个矩形dc.Ellipse(300, 100, 400, 200); // 绘制一个椭圆}```步骤4:处理绘图事件在对话框类的消息映射中添加对绘图事件的处理。
mfc绘图课程设计一、课程目标知识目标:1. 学生能理解MFC(Microsoft Foundation Class)的基本概念及其在绘图中的应用;2. 学生能掌握MFC绘图程序的基本框架和常用绘图工具的使用;3. 学生能了解并运用MFC中的颜色、画笔、画刷等绘图属性。
技能目标:1. 学生能运用MFC编写简单的绘图程序;2. 学生能通过MFC实现基本的图形绘制,如线条、矩形、椭圆等;3. 学生能通过MFC实现图形的填充、旋转等变换。
情感态度价值观目标:1. 培养学生对计算机绘图产生兴趣,激发其主动探索精神;2. 培养学生在团队合作中相互学习、交流,形成良好的合作氛围;3. 培养学生具备创新思维,敢于尝试新方法,提高解决问题的能力。
课程性质:本课程为信息技术学科选修课程,适用于对计算机绘图有兴趣的学生。
学生特点:学生具备一定的编程基础,对MFC有一定了解,具有较强的学习能力和探索精神。
教学要求:课程要求教师引导学生主动探索,通过实践操作,掌握MFC绘图的相关知识和技能。
在教学过程中,注重培养学生的动手能力和创新能力。
教学评估以学生的实际操作和绘图作品为依据。
二、教学内容1. MFC绘图基础理论:- MFC概述及其在绘图中的应用;- 常用绘图工具和类的介绍。
2. MFC绘图程序框架:- 创建MFC绘图程序的基本步骤;- 常用绘图函数和功能介绍。
3. 图形绘制与变换:- 线条、矩形、椭圆等基本图形的绘制;- 图形的填充、旋转等变换操作。
4. MFC绘图进阶应用:- 颜色、画笔、画刷等绘图属性的应用;- 综合实例分析,实现复杂图形的绘制。
教学大纲安排:第一课时:MFC绘图基础理论,介绍MFC及其在绘图中的应用,学习常用绘图工具和类。
第二课时:MFC绘图程序框架,学习创建MFC绘图程序的基本步骤和常用绘图函数。
第三课时:图形绘制与变换,实践绘制基本图形和实现图形的填充、旋转等变换。
第四课时:MFC绘图进阶应用,学习颜色、画笔、画刷等绘图属性的应用,分析综合实例。