基于vc的线条类设计
- 格式:doc
- 大小:588.99 KB
- 文档页数:37
VC++程序设计实验报告一、实验目的掌握MFC编程二、实验内容用MFC向导创建单文档应用程序,实现一个简单的画图程序。
●使用C++语言实现●使用VS2010集成开发环境开发●使用MFC应用程序开发框架三、实验步骤●基本功能描述1. 打开exe文件,在绘图下拉菜单中可分别设置绘制的图形形状,如直线、曲线、矩形及椭圆,线宽选项,有1-5可供选择,线型选项有实线、虚线、点线和点段线供设置,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。
2. 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。
●设计思路1. 对需要用到的变量进行初始化。
2. 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。
选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。
3. 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。
4. 选择图形或其它属性,可进行下一次绘制。
●软件设计A 设计步骤1.创建单文档创建一个MFC AppWizard[exe]工程,命名为“Draw”,如图1所示,并创建单文档,如图2所示。
创建成功后,系统自动生成相应的类,如图3所示。
图1 创建工程图2 创建单文档图3 生成类2.编辑菜单打开资源视图中的Menu-IDR_MAINFRAME添加需要的菜单项,如图4所示;并在菜单的属性中设定好所对应的ID,如图5所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。
VC++之简单图形绘制之绘制连续线条一、创建新工程二、添加变量、消息响应函数1、添加变量2、添加消息响应函数三、添加代码(红色部分)void CCBrushView::OnLButtonDown(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultm_point=point;m_decide=TRUE; //表示鼠标左键按下CView::OnLButtonDown(nFlags, point);}void CCBrushView::OnLButtonUp(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultm_decide=FALSE;CView::OnLButtonUp(nFlags, point);}void CCBrushView::OnMouseMove(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultCClientDC dc(this); //创建客户区内绘图之设备描述环境(设备上下文)对象CPen pen(PS_SOLID,1,RGB(0,0,255)); //创建一个蓝色画笔CPen *pOldPen=dc.SelectObject(&pen); //用新画笔替换原有画笔if(m_decide==TRUE) //鼠标左键按下{dc.MoveTo(m_point);dc.LineTo(point);m_point=point;}dc.SelectObject(pOldPen); //恢复原有画笔CView::OnMouseMove(nFlags, point);}四、编译五、运行六、函数说明CWnd::OnMouseMove函数声明afx_msg void OnMouseMove(UINT nFlags,CPoint point)nFlags:表示按下虚拟键类型。
VC基本绘图文档[键入作者姓名]VC基本绘图文档设计一个矢量图形绘制程序一、运行环境:Microsoft Visual C++ 6.0二、目标与任务:1.使设计的程矢量绘制图形序具有画点、画线、画多边形、画矩形的功能;2.其中所绘制的点、线、多边形具有保存的功能,并且能保存入数据库,数据库采用的access,文件名为shp.mdb,在设计的程序中使用ODBC访问数据库,DSN=shp,无同户名与密码;3.设计的绘图程序能读入数据库中的记录,而且可以通过自己建立的菜单[数据库操作]的子菜单[记录集导出]导出,显示在自己事先设计好的对话框设置中4.建立的[设置]菜单功能,其子菜单有[点的大小]、[线的宽度]功能。
三、程序总体结构图:四、各个功能模块详细设计1.画点画点流程图画点主要代码:2.画线画线主要代码:3.画矩形画矩形主要代码:4.画多边形画多边形的主要代码:五、数据库设计说明1.构造数据库,数据库采用access,.建立数据表,文件名为shp.mdb如下图5.2.创建ODBC数据源Windows中的ODBC组件出现系统的“控制面板”管理工具中,如下图所示:双击ODBC图标,进入ODBC数据源管理器。
然后创建用户用户DNS,过程如下下图:单击“添加”按钮,弹出创建数据源对话框,按下图选择用户所需的驱动程序(如下图):单击“完成”按钮进入指定驱动程序的安装对话框,单击“选择”按钮,将前面创建的数据库调入,结果如下图所示:单击“确定”按钮。
3.在自己的绘图MFC中绑定数据源建立新的类CShpSet类,其基类是CRecordset,单击“OK”,进入选择数据源对话框,按下图进行选择:如下图进入选择数据表对话框,选择自己已经建立过的shp.mdb数据表,如下图所示:单击“OK”,完成绑定数据源。
6.在MFC中建立显示此记录集对话框,其设计如下图所示:添加基于上图对话框的相应的类DisplayDataBaseDlg,其基类是CDlg,用于显示记录集,并建立相应的数据库操作菜单,用来显示记录集。
包头师范学院本科学年论文论文题目:基于VC++MFC程序设计——简易画图板院系:信息科学与技术学院专业:计算机科学与技术学号:姓名:指导教师:撰写学年:2010至2011学年二零一零年十二月摘要本软件是利用VC++这个强大的可视化编程工具开发的,软件主要功能包括图形的绘制、线型的设置、颜色的设置,图形文件的重绘和保存等功能。
本文介绍了如何完成上述功能,同时详细阐述了画图系统的实现过程以及对画图系统所做的功能扩充。
在画图软件设计上,其主要任务是:实现“绘制图形”、“图形的保存”两项功能。
本软件具有实用性、稳定性、易用性,和可维护性的特点,应该说它应是一个开放性的软件,用户可以根据需要对其功能进行扩充、完善与修改,使其符合自己的要求。
总之,本软件是一个逐步完善的软件。
关键词:VC++;MFC;绘图AbstractThis software is using vc + + this powerful visual programming tool development, software main functions including graphics rendering, linetype Settings, color setting, graphics file redraw of preserving and function.The paper introduced how to accomplish these functions, and explains in detail drawing system realization process and to drawing system do function expansion. In drawing software design, its main task is to achieve "drawings", "graphic save" two functions.This software has practicability, stability, ease-of-use, and maintainability characteristic, should say it should be an open software, the user can according to the needs of its functions were expansion, perfect and modification, make them comply with their requirements. Anyhow, this software is a perfect gradually software.Key words:Vc + +; MFC; drawing目录引言 (1)第1章vc++6.0和MFC简介 (2)1.1 vc++6.0简介 (2)1.2 MFC简介 (2)第2章基础知识 (2)2.1工程的新建 (3)2.2单文档简介 (4)2.3添加消息响应函数 (5)2.4资源 (5)2.5设备环境 (6)第3章简易画图板的制作 (6)3.1设计目的 (6)3.2 总体设计 (7)3.3详细设计 (8)3.3.1点、直线、矩形、椭圆的绘制 (10)3.3.2连续线和扇形的绘制 (12)3.3.3画刷 (14)3.3.4设置对话框 (16)3.3.5颜色 (17)3.3.6打开与保存 (17)第4章结果及结论 (18)4.1运行结果 (18)4.2结论 (20)参考文献 (22)附录:简易画图板主要程序代码 (23)致谢 (33)引言计算机技术的发展,使人类社会进入了信息化和自动化,计算机智能识别也随着计算机的发展得到了迅速的发展。
cseries类画线代码【原创版】目录1.概述 cseries 类画线代码2.cseries 类的主要功能3.cseries 类的使用示例4.结论正文cseries 类画线代码是一种在计算机图形学中广泛应用的编程技术,它可以帮助程序员在屏幕上绘制各种形状的线条,如直线、曲线、折线等。
cseries 类是 C 语言图形编程库中的一个重要组成部分,为广大程序员提供了方便、高效的图形绘制功能。
cseries 类的主要功能包括:1.初始化图形模式:设置绘图模式,如线条颜色、线宽、填充方式等;2.绘制直线:使用该函数可以在屏幕上绘制一条直线;3.绘制曲线:通过该函数可以绘制一条平滑的曲线;4.绘制折线:使用该函数可以绘制一条折线,适用于绘制数据图表等;5.关闭图形模式:完成绘图后,使用该函数关闭图形模式,释放资源。
下面是一个简单的 cseries 类画线代码示例:```c#include <conio.h>#include <graphics.h>#include <stdio.h>#include <stdlib.h>int main() {// 初始化图形模式initwindow(400, 400, "cseries 类画线代码示例");initgraph(400, 400);// 设置线条颜色、线宽、填充方式setcolor(1, 0, 0); // 设置线条颜色为红色setlinestyle(SOLID_LINE, 2); // 设置线宽为 2setfillstyle(SOLID_FILL, 0); // 设置填充方式为实心填充,颜色为黑色// 绘制直线line(100, 100, 300, 300);// 绘制曲线curve(100, 150, 200, 250, 300, 350, 400, 400);// 绘制折线plot(100, 200, 200, 300, 300, 400, 400, 500);// 关闭图形模式closegraph();return 0;}```通过运行上述代码,可以在屏幕上看到一条直线、一条曲线和一条折线。
VC++程序设计课程设计报告书题目:绘图软件的设计班级:1091151学号:109115112姓名:郭若楠指导教师:姚璐周期:2011-12-19至2011-12-23 成绩:2011年12月23日一、课程设计的目的与要求(一)课程设计目的与任务通过本课程的学习使学生熟悉应用程序设计的基础知识,熟悉Windows编程,熟悉Windows应用程序的设计、编写、调试等过程。
对基本控件使用、文字处理、图形处理有较全面的认识,了解什么是数据源,还会怎样将数据源和控件建立关系和如何使用数据库进行编程。
(二)题目要求单文档应用程序,能够选择图形的类型(圆,矩形,直线,画笔),能够选择图形的颜色,能够对绘制的图形进行颜色填充(使用画刷),能够选择图形的线型(如实线,点线,虚线等),能够选择画线的颜色和线的宽度。
绘制效果参见开始程序中的画图。
二、设计正文1、系统分析用VC++.NET开发画图应用软件的功能。
实现和用户的交互,根据用户的选择来实现相应图形的绘制。
2、功能详细描述及框图以菜单选择为主,根据用户的不同菜单选择来改变当前所要绘制的图形。
用“绘图”菜单下的“类型”菜单来选择所要绘制的图形是圆、矩形、直线还是画笔。
用“绘图”菜单下的“线的颜色”菜单来编辑所要绘制图形的边框颜色。
用“绘图”菜单下的“填充颜色”菜单实现所绘制的圆和矩形进行颜色填充,用“绘图”菜单下的“线型”来实现对线性(实线、虚线、点线)。
菜单来选择边框的用“绘图”菜单下的“线宽”实现边框的粗细。
3、主要功能逻辑过程和实现算法图的绘制主要在鼠标的左键按下、鼠标移动、鼠标左键松开的事件中来完成。
类型、选择颜色、填充颜色、选择线型、线宽、等都用相应的变量值来表示。
当选择某一种操作后,相应的变量值会改变,依次来判断用户的选择。
实现算法如下:void ChuituView::OnLine(){type=1;// 直线}void ChuituView::OnElli(){type=2;// 圆}void ChuituView::OnRect(){type=3;//矩形}void ChuituView::OnPen(){type=4;// 画笔}void ChuituView::OnLButtonDown(UINT nFlags, CPoint point) {// 按下鼠标左键p1=p2=point;pen.CreatePen(style,width,color);pdc->SelectObject(&pen);if(tc){bsh.CreateHatchBrush(6,tccolor);pdc->SelectObject(&bsh);}else{pdc->SelectStockObject(NULL_BRUSH);}pdc->SetROP2(R2_NOTXORPEN);a=true;CView::OnLButtonDown(nFlags, point);}void ChuituView::OnMouseMove(UINT nFlags, CPoint point) {// 移动鼠标if(!a)return;if(type==1){pdc->MoveTo(p1.x,p1.y);pdc->LineTo(p2.x,p2.y);p2=point;pdc->MoveTo(p1.x,p1.y);pdc->LineTo(p2.x,p2.y);}else if(type==2){pdc->Ellipse(p1.x,p1.y,p2.x,p2.y);p2=point;pdc->Ellipse(p1.x,p1.y,p2.x,p2.y);}else if(type==3){pdc->Rectangle(p1.x,p1.y,p2.x,p2.y);p2=point;pdc->Rectangle(p1.x,p1.y,p2.x,p2.y);}else if(type==4){p2=point;pdc->MoveTo(p1.x,p1.y);pdc->LineTo(p2.x,p2.y);p1=point;}CView::OnMouseMove(nFlags, point);}void ChuituView::OnLButtonUp(UINT nFlags, CPoint point) {//释放鼠标左键pdc->SetROP2(R2_COPYPEN);if(type==1){pdc->MoveTo(p1.x,p1.y);pdc->LineTo(point.x,point.y);}else if(type==2){pdc->Ellipse(p1.x,p1.y,point.x,point.y);}else if(type==3){pdc->Rectangle(p1.x,p1.y,point.x,point.y);}else if(type==4){pdc->MoveTo(p1.x,p1.y);pdc->LineTo(point.x,point.y);}a=false;CView::OnLButtonUp(nFlags, point);}void ChuituView::Onxzlolor(){// 线条颜色选择CColorDialog dlg(0,CC_FULLOPEN);if(dlg.DoModal()){color=dlg.GetColor();}}void ChuituView::Ontccolor(){// 填充颜色CColorDialog dlg(0,CC_FULLOPEN);if(dlg.DoModal()){tccolor=dlg.GetColor();tc=true;}}void ChuituView::Onwtc(){// 无类型,直接用颜色填充tcstyle=5;tc=true;}void ChuituView::Onx(){width=1;}void ChuituView::Onc(){width=2;}void ChuituView::Onsx(){style=0;}void ChuituView::Onxx(){style=1;}5、页面设计(“类型”菜单)(“选择颜色”菜单)(“填充颜色”菜单)(“选择线型”菜单)(“线宽”菜单)6、系统测试三、小组成员分工说明独立完成四、课程设计总结或结论1 课程设计过程中出现的技术难点和解决方法:技术难点:图形颜色的填充解决方法:void ChuituView::Ontccolor(){// 填充颜色CColorDialog dlg(0,CC_FULLOPEN);if(dlg.DoModal()){tccolor=dlg.GetColor();tc=true;}}2 课程设计期间的主要收获:通过本次课程设计,我充分了解和掌握了图形的绘制和一些VC++的控件的使用,对这学期所学知识有了更深刻的掌握,。
利用VC编写简单的绘图程序上机实验环境亦可选择Microsoft Visual C++〔以下简称VC〕。
VC是美国微软公司生产的基于其Windows系统的软件开发工具。
它具有使用灵活,并与32位Windows内核〔使用于Windows 2000/Windows XP〕高度兼容的特点,从而被Windows程序员们广泛使用。
VC 在图形图像处理方面有着广泛的应用,MFC中提供了大量的图形图像函数,下面我们将对使用VC/MFC编写简单的绘图程序。
一、使用VC编写MFC单文档应用程序很简单,只需要按照下面几个步骤进行:1.翻开MSVC集成开发环境。
双击桌面或“开始〞菜单中的Microsoft VisualC++6.0,不久将看到VC的编辑窗口,如图3-5:图1 VC启动界面2.选择菜单“File | New〞,在弹出的对话框中1)单击上方的选项卡“Project〞,2)选择“MFC AppWizard(exe)〞,3)在“Project name〞一栏中填写工程名,例如draw,4)在“Location〞一栏中填写你想把文件存放的位置〔目录〕。
然后按“OK〞。
见图2。
注意:第4〕步中指定你自己的目录,不要使用系统的缺省目录或者随便放在根目录或者其他的目录下。
这样便于你找到自己编写的程序。
图2 应用程序向导主界面3.在MFC Appwizard-Step 1中选择“Single Document〞,即单文档应用程序,点击“Finish〞,如图3所示。
注意:对于下面的操作我们可以忽略,直接点Finish即可。
图3 应用程序向导中选择单文档视图4.系统弹出一个当前工程信息的对话框,如图4所示,直接点“OK〞即可。
图4 新建工程信息5.进入程序编写的主界面,屏幕左下方为工作区,如图5所示,工作区中共有三种视图,分别是:1)文件视图〔“FileView〞〕,主要包括头文件,cpp文件以及资源文件。
我们在头文件中一般添加类的定义,类的成员变量和函数的声明,而在cpp文件中具体实现函数。
用VC做一个画图程序,要求,画图时设置其光标为十字型,并具有保存功能。
说明:保存画图部分(第三部分)方法与《Visual C++面向对象编程教程》上实例相似,不过,书上定义一个CTypedPtrArray<CObArray,CLine*>m_LineArray;用到类模板CTypedPtrArray 及其函数,我把它移植到其它程序上时老出错。
本例中,定义一个CObArray型变量m_LineArray,随后用到函数也是自己定义的。
一。
简单画图:a。
新建一个单文档应用程序Myline,在View类中添加成员变量,CPointm_ptOrigin;b。
添加两个消息响应OnLButtonDown,OnLButtonUp;在OnLButtonDown中,m_ptOrigin=point;在OnLButtonUp中,CClientDC dc(this);dc.MoveTo(m_ptOrigin);dc.LineTo(point);c。
运行,即可简单画直线,但不能保存,光标为正常光标,不适合画图。
二。
设置光标为十字光标:a。
在VIEW类添加一个变量:HCURSOR m_HCross;b。
在构造函数中导入十字光标:m_HCross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);c。
添加消息响应:OnMouseMove,设置十字光标:::SetCursor(m_HCross); d。
在OnLButtonDown中捕获光标:SetCapture();在OnLButtonUp中释放光标资源::ReleaseCapture();d。
运行,当光标移到客户区时,光标即可显示为十字型。
三。
实现画图的保存:1. 定义一个可序列化的类CLine:a. 新建一个类,从Cobject派生,(在Class type中要选Generic Class,否则基类选不了Cobject。
摘要本文主要介绍了一个简单的绘图软件的详细设计方法和过程。
它是我们大学生毕业前的一次考验。
它能实现一个简单的用户界面,并能实现几个基本的图元的移动,删除和改变颜色。
它的设计方法是利用MAC工程中的GDI(Graphics Device Interface)类库函数来实现画图的。
该软件的基本功能包括基本图形绘制,更改图元绘制条件(改变图元颜色),删除图元等。
要求:实现所见即所得绘图功能;实现图元的插入功能;实现图形文件的存储功能。
该软件是基于MAC实现的,在文本框的基础上实现绘图功能。
能通过程序设计以达到提高VC++的编程水平的目的。
随着社会的不断进步,人们对图形的要求越来越高,因此我们有必要掌握好图形的绘制,虽然本软件知识一个十分简单的软件。
但我们应该不断的学习,以便将来更好的适应发展。
关键词:MFC,图元,文本框AbstractThis paper describes a simple method of mapping software and process the detailed design. It is a test for students before graduation. It can implement a simple user interface, and can achieve a few basic primitive move, delete and change color. Its design is to use MAC Project GDI (Graphics Device Interface) function to implement drawing libraryThe software's basic functions, including basic graphics rendering, change primitive plan condition (change line color). Request: Realizes sees namely the obtained cartography function; Realizes primitive insertion; Realizes the graphic file memory function. The software is based on the MAC implementation.In the text box based on the graphics. Can the programming achieve enhances VC++ the programming level goal.As society progresses, people become increasingly demanding on the graphics, and we need to master the drawing, although the software knowledge a very simple software. But we should keep learning in order to better adapt to future development.Keyword: MFC, primitive, text box目录1 前言 (1)1.1 课题背景 (1)1.2 Visual C + +简介 (2)1.3 目的和内容 (2)1.4 课题技术关键 (3)2 VC++中MFC介绍 (4)2.1 MFC基本概念 (4)2.1.1 MFC简介 (4)2.1.2 封装 (5)2.1.3 继承 (5)2.1.4 GDI+简介 (6)2.2 MFC部分函数简介 (7)3 程序功能设计 (10)3.1 总体设计 (10)3.1.1流程分析 (10)3.1.2功能框架结构 (11)3.2 程序功能模块 (11)3.2.1绘制图元 (11)3.2.2改变绘制条件 (11)3.2.3文件持久性 (11)4 系统功能实现 (12)4.1 建立MFC工程 (12)4.2 实现按钮映射 (14)4.3 实现消息映射 (18)5 结果分析 (30)5.1 使用方法 (30)5.2 运行结果 (30)5.3 存在的问题 (30)5.4 解决方案 (30)6 结论 (31)致谢 (32)参考文献 (33)1 前言1.1 课题背景计算机图形技术是随着计算机技术在图形处理领域中的应用而发展起来的一门新技术,是伴随着电子计算机及其外围设备的发展而产生的,现已成为计算机应用科学中的一个重要分支,在许多行业中起着越来越大的作用。
计算机的运算能力的提高,图形处理速度的加快,使得图形学的各个研究方向得到充分发展,大量价格低、简单易用的图形应用程序促使具有图形处理功能的计算机进入家庭。
图形学已广泛应用于计算机辅助设计与制造、计算机动画、科学计算可视化、虚拟现实、影视娱乐等各个领域。
这必然促使计算机专业人员、广大非计算机专业的应用人员,从计算机图形学的理论高度和计算机绘图的实用角度来研究和开发计算机图形的生成技术及软件。
计算机图形学的原理和算法是开发图形软件的基础,对高级语言中绘图工具的掌握是理解和应用计算机图形理论的翅膀。
只有扎实的计算机图形学理论基础,才能开发图形软件;必须灵活运用高级语言中的绘图能力才能开发出优质的图形软件。
因此,我也必须要花费大量的时间学习掌握计算机图形学相关算法知识。
随着操作系统不断的更新换代,其自带的画图板界面及功能也是不断变化着的。
像是XP(Windows XP)、vista(Windows Vista)、Win7(Windows 7),它们的画图板的界面布局风格以及功能都有所不同。
Vista较XP,把颜色选择按钮放在了画板的上面,其它的基本上没太大变化,这样整体就显得整齐多了。
而Win7把左边的图像选择按钮也放在了画板的上方,这样更加的一目了然。
这表明,尽管是简简单单的一个操作系统自带画图板,系统设计人员也没有停止对它的不断研究与探索,他们在不断寻找着更人性化、更能满足大众需求的改变。
1.2 Visual C + +简介VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。
MFC中封装了大部分Windows API 函数和Windows控件,它包含的功能涉及到整个Windows操作系统。
MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。
另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。
因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。
1.3 目的和内容进入新世纪,随着科学技术的不断发展,计算机已经成为人们生活中不可缺少的一部分。
人们把计算机运用于各行各业,让它充分发挥作用,给我们的生产、生活带来许多便利。
作为21世纪计算机专业的大学生,我们的任务就是要用所学的理论知识创作出更多更人性化的软件,为现代生产、生活做贡献,方便广大计算机用户。
随着社会的不断发展以及计算机的不断普及,人们对画面的要求越高,对画图工具也提出了更高更全面的要求。
许多用户由于自身的画图习惯或者是视觉效果不同,对传统的画图工具可能感觉不是特别满意。
就像孩子总是喜欢界面做成可爱型的,而成人则希望界面正式且实用的,而老年人却是喜欢界面整齐简单明了的。
不同年龄不同身份的人,需求不同。
综合上述,为了尽量让所有人满意,在此我设计了一个简单的绘图程序,希望能一次为基础来设计更加合理的绘图软件,已满足大家的需求。
我们在学完VC++以后,为了更好的掌握和运用所学内容,完成了这个画图软件的制作,在这篇论文中我将详细向读者介绍一下我的设计思路和整个设计方法。
本课题主要研究是怎样基于MFC工程来制作简单的绘图软件。
1.4 课题技术关键本课题的关键技术是基于MFC的类库基础上调用GDI函数实现各种图元的插入,并实现移动、删除和改变颜色。
要求对MFC类库和GDI函数比较熟悉,并能正确运用。
2 VC++中MFC介绍2.1 MFC基本概念2.1.1 MFC简介MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard 用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
图2-1 VC++创建工程界面2.1.2 封装构成MFC框架的是MFC类库。
MFC类库是C++类库。
这些类或者封装了Win32应用程序编程接口(API),或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等,分述如下:(1)对Win32应用程序编程接口的封装用一个C++ Object来包装一个Windows Object。
例如:class CWnd是一个C++ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C++ window object的成员函数内,后者的成员变量m_hWnd就是前者的窗口句柄。
(2)对应用程序概念的封装使用SDK编写Windows应用程序时,总要定义窗口过程,登记Windows Class,创建窗口,等等。
MFC把许多类似的处理封装起来,替程序员完成这些工作。
另外,MFC提出了以文档-视图为中心的编程模式,MFC类库封装了对它的支持。
文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。
(3)对COM/OLE特性的封装OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。