mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx

上传人:b****2 文档编号:12969224 上传时间:2022-10-01 格式:DOCX 页数:17 大小:18.05KB
下载 相关 举报
mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx_第1页
第1页 / 共17页
mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx_第2页
第2页 / 共17页
mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx_第3页
第3页 / 共17页
mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx_第4页
第4页 / 共17页
mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx

《mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

mfc简单绘图程序报告word文档良心出品Word格式文档下载.docx

intfd判断是否为自由绘图模式

intw线宽

intRRGB中的R

intGRGB中的G

intBRGB中的B

CGraph类中

intm_nType:

保存后重绘时用户的选择

intqdx;

重绘起点x

intqdy;

重绘起点y

intzdx;

重绘终点x

intzdy;

重绘终点y

CLine类中

intcx;

重绘线宽

intsx;

intsy;

intzx;

intzy;

intw;

自定义颜色对话框关联变量:

IDC_EDIT_REDintm_Red

IDC_EDIT_GREENintm_Green

IDC_EDIT_BLUEintm_Blue

IDC_SCROLL_REDCScrollBarm_Sred

IDC_SLIDER_GREENCSliderCtrlm_Sgreen

IDC_SPIN_BLUECSpinButtonCtrlm_Sblue

2分析、设计与实现

2.1主要功能设计与实现

2.1.1有关文档视图功能的设计与实现

单文档结构

可序列化的类CGraph从CObject派生

可序列化的类CLine从CObject派生

对话框类zdyyanse从CDialog派生

2.1.2有关消息处理的设计与实现

方案:

需要响应的消息应有:

鼠标移动、鼠标左键按下、鼠标左键抬起、菜单栏中的画矩形、画直线、画椭圆、自由绘图、更多选项中的自定义颜色、工具栏中的红色、蓝色、绿色、线宽1、线宽2、线宽3、橡皮擦。

整体思路为,用户选择不同的功能后就响应相应的消息处理函数,给xz赋对应的值。

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

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

ID_DRAW_ELLIPSE:

COMMAND画椭圆

ID_DRAW_LINE:

COMMAND画直线

ID_DRAW_RECTANGLE:

COMMAND画矩形

ON_WM_LBUTTONDOWN鼠标左键按下

ON_WM_LBUTTONUP鼠标左键抬起

ON_WM_MOUSEMOVE鼠标移动

voidCDzyView:

:

OnDrawEllipse()

{

//TODO:

Addyourcommandhandlercodehere

xz=3;

}//当用户选择画椭圆,将变量xz赋值为3.

OnDrawLine()

xz=1;

}//当用户选择画直线,将变量xz赋值为1.

OnDrawRectangle()

xz=2;

}//当用户选择画矩形,将变量xz赋值为2.

 

OnLButtonDown(UINTnFlags,CPointpoint)

Addyourmessagehandlercodehereand/orcalldefault

sx=point.x;

sy=point.y;

fd=1;

CView:

OnLButtonDown(nFlags,point);

}//鼠标左键按下,将当前坐标赋值给sx,sy并判断鼠标是否按下(fd=1)

OnLButtonUp(UINTnFlags,CPointpoint)

CClientDCdc(this);

//this一般指向本窗口或当前活动视图

CPenpen;

//定义画笔

pen.CreatePen(PS_SOLID,w,RGB(R,G,B));

//创建画笔

dc.SelectStockObject(NULL_BRUSH);

dc.SelectObject(&

pen);

//获取画笔

fd=0;

switch(xz)

{

case1:

dc.MoveTo(sx,sy);

dc.LineTo(ex,ey);

break;

case2:

dc.Rectangle(sx,sy,ex,ey);

case3:

dc.Ellipse(sx,sy,ex,ey);

}

CGraph*pGraph=newCGraph(xz,sx,sy,ex,ey,w,R,G,B);

GetDocument()->

m_obArray.Add(pGraph);

OnLButtonUp(nFlags,point);

CDzyDoc*pDoc=GetDocument();

}//鼠标抬起时进行绘图,并将用户画的每一个图形对象保存到m_obArray中

OnMouseMove(UINTnFlags,CPointpoint)

Addyourmessagehandlercodehereand/orcalldefault

ex=point.x;

ey=point.y;

CMainFrame*pFrame;

pFrame=(CMainFrame*)AfxGetApp()->

m_pMainWnd;

//获得指向主框架窗口的指针

CStatusBar*pStatus=&

pFrame->

m_wndStatusBar;

//获得指向主框架窗口上状态条的地址

CStringstr;

if(pStatus){

str.Format("

X=%d"

point.x);

pStatus->

SetPaneText(1,str);

//在第1个窗格中显示str的内容

Y=%d"

point.y);

SetPaneText(2,str);

//在第2个窗格中显示str的内容

if(xz==4){

if(fd==1)

CLine*pLine=newCLine(sx,sy,ex,ey,w,R,G,B);

GetDocument()->

m_lineObarry.Add(pLine);

CPenpen;

dc.MoveTo(sx,sy);

dc.LineTo(point);

sy=point.y;

OnMouseMove(nFlags,point);

}//获取终点坐标,并进行自由绘图操作,同时在状态栏中显示鼠标当前坐标。

并保存自由绘图的坐标。

OnW1()

w=2;

}//将线宽设为2

OnW2()

w=3;

}//将线宽设为3

Onw3()

w=5;

}//将线宽设为5

OnBlue()

R=0;

G=0;

B=255;

}//工具栏中选择蓝色

OnRed()

R=255;

B=0;

}//工具栏中选择红色

OnGreen()

G=255;

}//工具栏中选择绿色

OnFreedraw()

xz=4;

}//自由绘图

OnEraser()

}

Onzdy()

zdyyansedlg;

//定义对话框对象

intresult=dlg.DoModal();

if(result==IDOK)

{R=dlg.m_Red;

B=dlg.m_Blue;

G=dlg.m_Green;

2.1.3有关菜单、工具栏、状态栏设计与实现

保持原有菜单并添加绘图工具--矩形颜色与线宽----颜色自由绘图更多

椭圆线宽------线宽1

直线线宽2

线宽3

工具栏:

添加矩形、直线、椭圆的快速绘图按钮

添加颜色快速选择按钮

添加线宽快速选择按钮

状态栏:

设计显示当前鼠标坐标

2.1.4有关对话框的设计与实现

通过菜单点击更多选项中的自定义颜色弹出对话框用滚动条、滑动条、旋转按钮修改3种颜色的值,并改变改变预览值的

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

当前位置:首页 > 自然科学 > 数学

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

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