欢迎来到天天文库
浏览记录
ID:55563347
大小:620.00 KB
页数:26页
时间:2020-05-17
《北邮程序设计实践报告mfc画图.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、程序设计实践设计报告课题名称:简单画图程序的设计与实现学生姓名:班级:班内序号:学号:日期:课题概述1.1课题目标和主要内容:该软件功能与Windows下附件中的画图软件有相似功能。本程序是在VC2010平台上用MFC所编。绘制方面的功能主要包括绘制各种图元,包括直线、矩形、椭圆、扇形、连续线,用笔自由绘图。绘图时可以选择各种颜色,各种线型和线宽。1.2系统的主要功能设计一个单文档类型的MFCAppWizard(exe)工程,此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。并且能实现绘图的控制,包括线宽、线型和颜色和字体的设置
2、。2.系统设计2.1系统总体框架总体设计设计图如图62.2系统详细设计1.首先,新建一个单文档类型的MFCAppWizard(exe)工程,工程取名为:SHOW。为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CSHOWView类中添加一个私有变量dType;用来保存用户的选择,该变量的定义如下所述:private:DrawTypedType;
3、接着,在视类的构造函数中将此变量初始化为0,程序代码如下:利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量dType设置为不同的值。程序代码如下:voidCSHOWView::OnShowSline(){//TODO:Addyourcommandhandlercodehere//MessageBox("直¡À线?Clicked!");dType=SLine;}voidCSHOWView::OnShowCline(){//TODO:AddyourcommandhandlercodeheredTyp
4、e=CLine;}voidCSHOWView::OnShowNosector(){//TODO:AddyourcommandhandlercodeheredType=NoSector;}voidCSHOWView::OnShowSector(){//TODO:AddyourcommandhandlercodeheredType=Sector;}voidCSHOWView::OnShowRect(){//TODO:AddyourcommandhandlercodeheredType=Recta;}voidCSHOWView::OnShowEcllipse
5、(){//TODO:AddyourcommandhandlercodeheredType=Ecllipse;}2.直线、矩形、椭圆扇形的绘制对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标左键松开时得到另外一个点。为视类CSHOWView分别捕获鼠标左键按下和弹起这两个消息。另外当鼠标左键按下时,需要将鼠标当前按下点保存,因此我们为CSHOWView再增加一个CPoint类型的私有成员变量:m_ptOrigin,在视类的构造函数中将此变量初始化为0。在鼠标按下消息响应函数中,保存该点,代码如下:voidCSHOWVi
6、ew::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefault//m_ptOrigin=point;switch(dType){caseSLine:m_bDraw=TRUE;m_ptOrigin=point;break;caseCLine:m_bDraw=TRUE;m_ptOrigin=point;break;caseNoSector:m_bDraw=TRUE;m_ptOrigin=point;break;caseSector
7、:m_bDraw=TRUE;m_ptOrigin=point;m_ptNext=point;break;caseRecta:m_bDraw=TRUE;m_ptOrigin=point;break;caseEcllipse:m_bDraw=TRUE;m_ptOrigin=point;break;default:break;}CView::OnLButtonDown(nFlags,point);}3.连续线和扇形的绘制Windows系统为我们提供了一个画图程序,在该程序中,利用画笔可以绘制连续的线条,下面我们设计绘制连续线和扇形。为了绘制连续的线条,首先要
8、得到线条的起点,这在前面已经实现。然后需要捕获鼠标移动过程中的每一个点,这可以通过捕获鼠标移动
此文档下载收益归作者所有