欢迎来到天天文库
浏览记录
ID:20355196
大小:56.00 KB
页数:4页
时间:2018-10-12
《visual c++ mfc图形绘制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验2VisualC++MFC的图形绘制一、实验目的1.了解Windows应用程序的特点。2.掌握MFC类库中CDC类绘图函数的使用方法。3.使用VisualC++开发简单Windows程序。二、实验内容利用VisualC++6.0设计一个简易绘图板,完成简单的绘图功能。三、实验指导1.带菜单界面制作新建一个单文档类型的MFCAppWizard(exe)工程,工程取名为:Graphic。为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单
2、项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。表1添加的菜单项菜单项ID菜单项名称菜单项命令响应函数IDM_DOT点OnDotIDM_LINE直线OnLineIDM-RECTANGLE矩形OnRectangleIDM_ELLIPSE椭圆OnEllipseIDM_SHANXING扇形OnShanxingIDM_LIANXUXIAN连
3、续线OnLianxuxian在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述:private:UINTm_nDrawType;接着,在视类的构造函数中将此变量初始化为0,程序代码如下:CGraphicView::CGraphicView(){//TODO:addconstructioncodeherem_nDrawType=0;}利用switch/c
4、ase语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。程序代码如下:voidCGraphicView::OnDot(){//TODO:Addyourcommandhandlercodehere4m_nDrawType=1;}voidCGraphicView::OnLine(){//TODO:Addyourcommandhandlercodeherem_nDrawType=2;}voidCGraphicView::OnRectangle
5、(){//TODO:Addyourcommandhandlercodeherem_nDrawType=3;}voidCGraphicView::OnEllipse(){//TODO:Addyourcommandhandlercodeherem_nDrawType=4;}voidCGraphicView::OnShanxing(){//TODO:Addyourcommandhandlercodeherem_nDrawType=5;}voidCGraphicView::OnLianxuxian(){//TO
6、DO:Addyourcommandhandlercodeherem_nDrawType=6;}2.点、直线、矩形、椭圆的绘制对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标左键松开时得到另外一个点。为视类CGraphicView分别捕获鼠标左键按下和弹起这两个消息。另外当鼠标左键按下时,需要将鼠标当前按下点保存,因此我们为CGraphicView再增加一个CPoint类型的私有成员变量:m_ptOrigin,在视类的构造函数中将此变量初始化为0。在鼠标按下消息响应函数
7、中,保存该点,代码如下:voidCGraphicView::OnLButtonDown(UINTnFlags,CPointpoint){4//TODO:Addyourmessagehandlercodehereand/orcalldefaultm_ptOrigin=point;//保存鼠标按下得到点,也是绘制一个点CView::OnLButtonDown(nFlags,point);}在鼠标左键弹起消息响应函数中实现绘图,代码如下:voidCGraphicView::OnLButtonUp(UINTnF
8、lags,CPointpoint){//TODO:Addyourmessagehandlercodehereand/orcalldefault//创建并获得设备描述CClientDCdc(this);switch(m_nDrawType){case1:dc.SetPixel(point,RGB(255,0,0));/*绘制点*/break;case2:/*绘制直线*/dc.MoveTo(m_ptOrigin);/*调用MoveTo函数移动到
此文档下载收益归作者所有