基于MFC的简单画图程序实验Word文件下载.docx

上传人:b****1 文档编号:13394509 上传时间:2022-10-10 格式:DOCX 页数:15 大小:922.92KB
下载 相关 举报
基于MFC的简单画图程序实验Word文件下载.docx_第1页
第1页 / 共15页
基于MFC的简单画图程序实验Word文件下载.docx_第2页
第2页 / 共15页
基于MFC的简单画图程序实验Word文件下载.docx_第3页
第3页 / 共15页
基于MFC的简单画图程序实验Word文件下载.docx_第4页
第4页 / 共15页
基于MFC的简单画图程序实验Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于MFC的简单画图程序实验Word文件下载.docx

《基于MFC的简单画图程序实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于MFC的简单画图程序实验Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

基于MFC的简单画图程序实验Word文件下载.docx

3)鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。

4)选择图形或其它属性,可进行下一次绘制。

 

图1程序流程图

3软件设计

3.1设计步骤

1)创建单文档

创建一个MFCAppWizard[exe]工程,命名为“yinshuyan”,如图2所示,并创建单文档,如图3所示。

创建成功后,系统自动生成相应的类,如图4所示。

图2创建工程

图3创建单文档

图4生成类

2)编辑菜单

添加需要的菜单项,如图5所示(可以通过拖动调整菜单的顺序);

并在菜单的属性中设定好所对应的ID,如图6所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符(Separator)选项即可)。

图5添加菜单项

图6设置菜单ID

表1菜单项对应ID

菜单名

ID

直线

ID_LINE

线宽1

ID_W1

矩形

ID_RECT

线宽2

ID_W2

椭圆

ID_ELLIPSE

线宽3

ID_W3

颜色

ID_COLOR

线宽4

ID_W4

填充色

ID_FILLCOLOR

线宽5

ID_W5

建立类向导,在视图类CyinshuyanView(通过菜单View->

ClassWizard,或者快捷键Ctrl+w打开)中,对各菜单项添加对应的COMMAND消息处理函数,部分菜单项还添加对应的UPDATE_COMMAND_UI消息函数,如图7所示。

图7建立类向导【注意:

此图有误,Classname的下拉框中,

应选择“CyinshuyanView”而非此图显示的“CMainFrame”】

上述操作完成后,可以发现在ClassCMainFrame中自动增加了类似OnLine()之类的许多函数,并且在源文件MainFrm.cpp中,自动添加了相应的消息映射。

BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)

//{{AFX_MSG_MAP(CMainFrame)

ON_WM_CREATE()

ON_COMMAND(ID_LINE,OnLine)

……

END_MESSAGE_MAP()

3)创建工具栏

在插入处选择资源(菜单Insert->

Resource,或者快捷键Ctrl+R),新建工具栏,如图8所示;

图8新建工具栏

在工具栏上添加相应的按钮,在属性处更改其ID,如图9所示。

图9编辑工具栏

4)在相应消息函数处添加代码,实现其功能

建立类向导,在视图类CyinshuyanView中,添加WM_PAINT消息,以及WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE消息,并在其中添加相应的代码,如图10所示。

图10添加WM_PAINT消息

3.2界面设计

各控件名称,类型,属性及相关变量如表2所示。

表2界面控件表

控件名称

控件类型

属性

相关变量

绘图

下拉式菜单

直线

菜单项

工具栏按钮

intshape

菜单项

线宽

弹出式菜单

intw

颜色(线色)

COLORREFm_nColor

COLORREFm_fColor

3.3关键源代码

1)在“MainFrm.h”中,在classCMainFrame:

publicCFrameWnd里的protected下定义:

CToolBarm_drawToolBar;

//工具栏

2)在“MainFrm.cpp”中,在CMainFrame:

:

OnCreate(LPCREATESTRUCTlpCreateStruct)里添加以下代码:

if(!

m_drawToolBar.Create(this)||

!

m_drawToolBar.LoadToolBar(IDR_DRAW))

{TRACE0("

Failedtocreatestatusbar\n"

);

return-1;

}

3)在“YinshuyanView.h”中,在classCYinshuyanView:

publicCView里的public下定义相关变量:

COLORREFm_nColor;

COLORREFm_fColor;

CPointcpoint;

CPointopoint;

BOOLm_Down;

intw;

intshape;

4)在“YinshuyanView.cpp”中,添加如下函数及代码:

CYinshuyanView:

CYinshuyanView()

{w=1;

//初始线宽默认为1

shape=0;

}

voidCYinshuyanView:

OnW1()

{

w=1;

//令线宽为1

}

voidCYinshuyanView:

OnW2()

w=2;

//令线宽为2

voidCYinshuyan:

OnW3()

w=3;

//令线宽为3

OnW4()

w=4;

//令线宽为4

OnW5()

w=5;

//令线宽为5

OnUpdateW1(CCmdUI*pCmdUI)

pCmdUI->

SetRadio(w==1);

//当线宽为1时,此选项前标有圆点

OnUpdateW2(CCmdUI*pCmdUI)

SetRadio(w==2);

//当线宽为2时,此选项前标有圆点

OnUpdateW3(CCmdUI*pCmdUI)

SetRadio(w==3);

//当线宽为3时,此选项前标有圆点

OnUpdateW4(CCmdUI*pCmdUI)

SetRadio(w==4);

OnUpdateW5(CCmdUI*pCmdUI)

SetRadio(w==5);

OnLine()

shape=1;

//选择直线,则令shape为1

OnRect()

shape=2;

//选择矩形,则令shape为2

OnEllipse()

shape=3;

//选择椭圆,则令shape为3

OnUpdateLine(CCmdUI*pCmdUI)

SetCheck(shape==1);

//shape为1时,直线选项前打上勾

OnUpdateRect(CCmdUI*pCmdUI)

SetCheck(shape==2);

//shape为2时,矩形选项前打上勾

OnUpdateEllipse(CCmdUI*pCmdUI)

SetCheck(shape==3);

//shape为3时,椭圆选项前打上勾

OnColor()

CColorDialogColor;

//创建颜色对话框

if(Color.DoModal()==IDOK)//如果用户点击OK按钮

m_nColor=Color.GetColor();

//更改颜色,把颜色赋到m_nColor

OnFillColor()

CColorDialogFillColor;

if(FillColor.DoModal()==IDOK)//如果用户点击OK按钮

m_fColor=FillColor.GetColor();

//更改颜色,把颜色赋到m_fColor

OnPaint()

CPaintDCdc(this);

//devicecontextforpainting

CPenpen;

//定义画笔

CBrushbrush;

//定义画刷

pen.CreatePen(PS_SOLID,w,m_nColor);

//创建画笔

brush.CreateSolidBrush(m_fColor);

//创建画刷

dc.SelectObject(&

pen);

//获取画笔

brush);

//获取画刷

if(shape==1)

{dc.MoveTo(opoint.x,opoint.y);

dc.LineTo(cpoint.x,cpoint.y);

}//绘制直线,从opoint到cpoint连线

if(shape==2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1