1 / 15
文档名称:

简易画图板设计报告.doc

格式:doc   大小:110KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

简易画图板设计报告.doc

上传人:薄荷牛奶 2019/1/10 文件大小:110 KB

下载得到文件列表

简易画图板设计报告.doc

文档介绍

文档介绍:设计报告:Graphic简易画图板-----韩伟谢程焜肖越周峰电科二班1设计目的设计一个单文档类型的MFCAppWizard(exe)工程,工程取名为:Graphic。此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开以及笔刷的使用。2总体设计设计图如图6简易画图板文件绘图笔刷打开保存点直线矩形椭圆扇形连续线设置颜色简单笔刷位图笔刷透明笔刷线宽线型图63详细设计首先,新建一个单文档类型的MFCAppWizard(exe)工程,工程取名为:Graphic。为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。表1添加的菜单项菜单项ID菜单项名称菜单项命令响应函数IDM_DOT点OnDotIDM_LINE直线OnLineIDM-RECTANGLE矩形OnRectangleIDM_ELLIPSE椭圆OnEllipseIDM_SHANXING扇形OnShanxingIDM_LIANXUXIAN连续线OnLianxuxian在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述:private: UINTm_nDrawType;接着,在视类的构造函数中将此变量初始化为0,程序代码如下:CGraphicView::CGraphicView(){ //TODO:addconstructioncodeherem_nDrawType=0;}利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。程序代码如下:voidCGraphicView::OnDot(){ //TODO:mandhandlercodehere m_nDrawType=1;}voidCGraphicView::OnLine(){ //TODO:mandhandlercodehere m_nDrawType=2;}voidCGraphicView::OnRectangle(){ //TODO:mandhandlercodehere m_nDrawType=3;}voidCGraphicView::OnEllipse(){ //TODO:mandhandlercodehere m_nDrawType=4;}voidCGraphicView::OnShanxing(){ //TODO:mandhandlercodehere m_nDrawType=5;}voidCGraphicView::OnLianxuxian(){ //TODO:mandhandlercodehere m_nDrawType=6;}、直线、矩形、椭圆的绘制(周峰谢程焜)对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标左键松开时得到另外一个点。为视类CGraphicView分别捕获鼠标左键按下和弹起这两个消息。另外当鼠标左键按下时,需要将鼠标当前按下点保存,因此我们为CGraphicView再增加一个CPoint类型的私有成员变量:m_ptOrigin,在视类的构造函数中将此变量初始化为0。在鼠标按下消息响应函数中,保存该点,代码如下:voidCGraphicView::OnLButtonDown(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault m_ptOrigin=point;//保存鼠标按下得到点,也是绘制一个点 CView::OnLButtonDown(nFlags,point);}在鼠标左键弹起消息响应函数中实现绘图,代码如下:voidCGraphicView::OnLButtonUp(UINTnFlags,CPointpoint){ //TODO:Addyourmessagehandlercodehereand/orcalldefault//lientDCdc(this); switch(m_nDrawType) { case1: (point,RGB(255,0,0));/*绘制点*/ break; case2:/*绘制直线*