MFC画图程序.docx

上传人:b****4 文档编号:4930954 上传时间:2022-12-11 格式:DOCX 页数:28 大小:50.85KB
下载 相关 举报
MFC画图程序.docx_第1页
第1页 / 共28页
MFC画图程序.docx_第2页
第2页 / 共28页
MFC画图程序.docx_第3页
第3页 / 共28页
MFC画图程序.docx_第4页
第4页 / 共28页
MFC画图程序.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

MFC画图程序.docx

《MFC画图程序.docx》由会员分享,可在线阅读,更多相关《MFC画图程序.docx(28页珍藏版)》请在冰豆网上搜索。

MFC画图程序.docx

MFC画图程序

 

《基于MFC的简单画图程序》实训报告

 

班级:

姓名:

学号:

指导老师:

简单画图程序

1基本功能描述

(1)在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,线宽选项,有1-5可供选择,还可以设置线色以及填充色,通过弹出的颜色对话框选择需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔,画刷来绘制选择的图形。

(2)选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。

(3)增添工具栏,设置绘制的图形形状,线色以及填充色,以及线宽等11个图形,可更方便地选择相应的功能。

2设计思路

(1)对需要用到的变量进行初始化。

(2)选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。

选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。

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

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

3.关键功能实现

当画图完毕后,可以实现图画的保存和打开。

4.截图

5.源代码:

头文件

//Draw.h:

mainheaderfilefortheDRAWapplication

//

#if!

defined(AFX_DRAW_H__378053F6_088F_44B7_A578_9738CBEED57F__INCLUDED_)

#defineAFX_DRAW_H__378053F6_088F_44B7_A578_9738CBEED57F__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

#ifndef__AFXWIN_H__

#errorinclude'stdafx.h'beforeincludingthisfileforPCH

#endif

#include"resource.h"//mainsymbols

/////////////////////////////////////////////////////////////////////////////

//CDrawApp:

//SeeDraw.cppfortheimplementationofthisclass

//

classCDrawApp:

publicCWinApp

{

public:

CDrawApp();

DECLARE_MESSAGE_MAP()

};

//DrawDoc.h:

interfaceoftheCDrawDocclass

//

/////////////////////////////////////////////////////////////////////

#if!

defined(AFX_DRAWDOC_H__32E35C56_2489_4948_8AD0_DF51F96B20E1__INCLUDED_)

#defineAFX_DRAWDOC_H__32E35C56_2489_4948_8AD0_DF51F96B20E1__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

 

#include"Line.h"

#include

classCDrawDoc:

publicCDocument

{

protected:

//createfromserializationonly

CDrawDoc();

DECLARE_DYNCREATE(CDrawDoc)

public:

public:

public:

intGetNumLines();

voidAddLine(CPointpt1,CPointpt2);

CLine*GetLine(intnIndex);

virtual~CDrawDoc();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

CTypedPtrArraym_LineArray;

protected:

DECLARE_MESSAGE_MAP()

};

//DrawView.h:

interfaceoftheCDrawViewclass

//

/////////////////////////////////////////////////////////////////////////////

#if!

defined(AFX_DRAWVIEW_H__537E5681_BEE5_44E4_9C81_F607277F4415__INCLUDED_)

#defineAFX_DRAWVIEW_H__537E5681_BEE5_44E4_9C81_F607277F4415__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

 

classCDrawView:

publicCScrollView

{

protected:

//createfromserializationonly

CDrawView();

DECLARE_DYNCREATE(CDrawView)

public:

CDrawDoc*GetDocument();

COLORREFm_nColor;

COLORREFm_fColor;

CPointcpoint;

CPointopoint;

BOOLm_Down;

intw;

intshape;

public:

OnPreparePrinting(CPrintInfo*pInfo);

virtualvoidOnBeginPrinting(CDC*pDC,CPrintInfo*pInfo);

virtualvoidOnEndPrinting(CDC*pDC,CPrintInfo*pInfo);

public:

virtual~CDrawView();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

 

protected:

HCURSORm_hCross;

boolm_bDragging;

CPointm_ptBegin;

afx_msgvoidOnPaint();

afx_msgvoidOnhuifu();

DECLARE_MESSAGE_MAP()

};

#ifndef_DEBUG//debugversioninDrawView.cpp

inlineCDrawDoc*CDrawView:

:

GetDocument()

{return(CDrawDoc*)m_pDocument;}

#endif

//Line.h:

interfacefortheCLineclass.

//

/////////////////////////////////////////////////////////////////////

#if!

defined(AFX_LINE_H__1DE25D19_06FE_4CF3_A60F_A5072A8E61A7__INCLUDED_)

#defineAFX_LINE_H__1DE25D19_06FE_4CF3_A60F_A5072A8E61A7__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

classCLine:

publicCObject

{

public:

voidDrawLine(CDC*pDC);

CLine(CPointpt1,CPointpt2);

CLine();

virtual~CLine();

voidSerialize(CArchive&ar);//类CLine的序列化函数

DECLARE_SERIAL(CLine)//声明序列化类CLine

private:

CPointm_pt2;

CPointm_pt1;

};

#endif

 

//MainFrm.h:

interfaceoftheCMainFrameclass

//

/////////////////////////////////////////////////////////////////////////////

#if!

defined(AFX_MAINFRM_H__0CDCF56E_36A1_43BE_9370_67E1222CD397__INCLUDED_)

#defineAFX_MAINFRM_H__0CDCF56E_36A1_43BE_9370_67E1222CD397__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

classCMainFrame:

publicCFrameWnd

{

protected:

//createfromserializationonly

CToolBarm_drawToolBar;

CMainFrame();

DECLARE_DYNCREATE(CMainFrame)

public:

public:

virtual~CMainFrame();

#ifdef_DEBUG

virtualvoidAssertValid()const;

virtualvoidDump(CDumpContext&dc)const;

#endif

protected:

CStatusBarm_wndStatusBar;

CToolBarm_wndToolBar;

protected:

DECLARE_MESSAGE_MAP()

};

//{{NO_DEPENDENCIES}}

//MicrosoftDeveloperStudiogeneratedincludefile.

//UsedbyDraw.rc

//

#defineIDD_ABOUTBOX100

#defineIDR_MAINFRAME128

#defineIDR_DRAWTYPE129

#defineIDR_TOOLBAR1130

#defineID_LINE32771

#defineID_RECT32772

#defineID_ELLIPSE32773

#defineID_W132774

#defineID_W232775

#defineID_W332776

#defineID_W432777

#defineID_W532778

#defineID_COLOR32780

#defineID_FILLCOLOR32781

#defineID_huifu32786

//Nextdefaultvaluesfornewobjects

//

#ifdefAPSTUDIO_INVOKED

#ifndefAPSTUDIO_READONLY_SYMBOLS

#define_APS_3D_CONTROLS1

#define_APS_NEXT_RESOURCE_VALUE132

#define_APS_NEXT_COMMAND_VALUE32787

#define_APS_NEXT_CONTROL_VALUE1000

#define_APS_NEXT_SYMED_VALUE101

#endif

#endif

 

//stdafx.h:

includefileforstandardsystemincludefiles,

//orprojectspecificincludefilesthatareusedfrequently,but

//arechangedinfrequently

#if!

defined(AFX_STDAFX_H__65BC9533_FB09_4FF8_B4BB_2E1D9BD6488A__INCLUDED_)

#defineAFX_STDAFX_H__65BC9533_FB09_4FF8_B4BB_2E1D9BD6488A__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

#defineVC_EXTRALEAN//Excluderarely-usedstufffromWindowsheaders

#include//MFCcoreandstandardcomponents

#include//MFCextensions

#include//MFCAutomationclasses

#include//MFCsupportforInternetExplorer4CommonControls

#ifndef_AFX_NO_AFXCMN_SUPPORT

#include//MFCsupportforWindowsCommonControls

#endif

源程序文件

//Draw.cpp:

Definestheclassbehaviorsfortheapplication.

//

#include"stdafx.h"

#include"Draw.h"

#include"MainFrm.h"

#include"DrawDoc.h"

#include"DrawView.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CDrawApp

BEGIN_MESSAGE_MAP(CDrawApp,CWinApp)

ON_COMMAND(ID_FILE_NEW,CWinApp:

:

OnFileNew)

ON_COMMAND(ID_FILE_OPEN,CWinApp:

:

OnFileOpen)

ON_COMMAND(ID_FILE_PRINT_SETUP,CWinApp:

:

OnFilePrintSetup)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CDrawAppconstruction

CDrawApp:

:

CDrawApp()

{

}

/////////////////////////////////////////////////////////////////////////////

CDrawApptheApp;

/////////////////////////////////////////////////////////////////////////////

BOOLCDrawApp:

:

InitInstance()

{

AfxEnableControlContainer();

#ifdef_AFXDLL

Enable3dControls();

#else

Enable3dControlsStatic();

#endif

SetRegistryKey(_T("LocalAppWizard-GeneratedApplications"));

LoadStdProfileSettings();

.

CSingleDocTemplate*pDocTemplate;

pDocTemplate=newCSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CDrawDoc),

RUNTIME_CLASS(CMainFrame),//mainSDIframewindow

RUNTIME_CLASS(CDrawView));

AddDocTemplate(pDocTemplate);

CCommandLineInfocmdInfo;

ParseCommandLine(cmdInfo);

if(!

ProcessShellCommand(cmdInfo))

returnFALSE;

m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

m_pMainWnd->SetWindowText("简单的绘图程序");

returnTRUE;

}

/////////////////////////////////////////////////////////////////////////////

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

END_MESSAGE_MAP()

voidCDrawApp:

:

OnAppAbout()

{

CAboutDlgaboutDlg;

aboutDlg.DoModal();

}

 

//DrawDoc.cpp:

implementationoftheCDrawDocclass

//

#include"stdafx.h"

#include"Draw.h"

#include"DrawDoc.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

 

#include"Line.h"

#include

/////////////////////////////////////////////////////////////////////////////

IMPLEMENT_DYNCREATE(CDrawDoc,CDocument)

BEGIN_MESSAGE_MAP(CDrawDoc,CDocument)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

CDrawDoc:

:

CDrawDoc()

{

}

CDrawDoc:

:

~CDrawDoc()

{

}

BOOLCDrawDoc:

:

OnNewDocument()

{

if(!

CDocument:

:

OnNewDocument())

returnFALSE;

returnTRUE;

}

 

/////////////////////////////////////////////////////////////////////////////

voidCDrawDoc:

:

Serialize(CArchive&ar)

{

if(ar.IsStoring())

{

m_LineArray.Serialize(ar);//调用CObArray类的序列化函数

}

else

{

m_LineArray.Serialize(ar);//调用CObArray类的序列化函数

}

}

/////////////////////////////////////////////////////////////////////////////

#ifdef_DEBUG

voidCDrawDoc:

:

AssertValid()const

{

CDocument:

:

AssertValid();

}

voidCDrawDoc:

:

Dump(CDumpContext&dc)const

{

CDocument:

:

Dump(dc);

}

#endif

/////////////////////////////////////////////////////////////////////////////

//CDrawDoccommands

CLine*CDrawDoc:

:

GetLine(intnIndex)

{

if(nIndex<0||nIndex>m_LineArray.GetUpperBound())

returnNULL;

returnm_LineArray.GetAt(nIndex);

}

voidCDrawDoc:

:

AddLine(CPointpt1,CPointpt2)

{

CLine*pLine=newCLine(pt1,pt2);

m_LineArray.Add(pLine);

SetModifiedFlag();//设置文档修改标

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

当前位置:首页 > 求职职场 > 简历

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

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