2024年5月11日发(作者:)

实验2 Visual C++ MFC的图形绘制

一、实验目的

1.了解Windows应用程序的特点。

2.掌握MFC类库中CDC类绘图函数的使用方法。

3.使用VisualC++开发简单Windows程序。

二、实验内容

利用VisualC++6.0设计一个简易绘图板,完成简单的绘图功能。

三、实验指导

1. 带菜单界面制作

新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。为此程序添加一个子菜

单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的

一个菜单项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所

示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,

这六个响应函数的名称分别如表1所示。

表1添加的菜单项

菜单项ID

IDM_DOT

IDM_LINE

IDM-RECTANGLE

IDM_ELLIPSE

IDM_SHANXING

IDM_LIANXUXIAN

菜单项名称

直线

矩形

椭圆

扇形

连续线

菜单项命令响应函数

OnDot

OnLine

OnRectangle

OnEllipse

OnShanxing

OnLianxuxian

在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使

用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如

下所述:

private: UINT m_nDrawType;

接着,在视类的构造函数中将此变量初始化为0,程序代码如下:

CGraphicView::CGraphicView()

{

// TODO: add construction code here

m_nDrawType=0;

}

利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项

时,将变量m_nDrawType设置为不同的值。程序代码如下:

void CGraphicView::OnDot()

{

// TODO: Add your command handler code here

1

}

m_nDrawType=1;

void CGraphicView::OnLine()

{

}

void CGraphicView::OnRectangle()

{

}

void CGraphicView::OnEllipse()

{

}

void CGraphicView::OnShanxing()

{

}

void CGraphicView::OnLianxuxian()

{

}

2. 点、直线、矩形、椭圆的绘制

对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。当鼠标左击时得到一个点,当鼠标左

键松开时得到另外一个点。为视类CGraphicView分别捕获鼠标左键按下和弹起这两个消息。另外当鼠

标左键按下时,需要将鼠标当前按下点保存,因此我们为CGraphicView再增加一个CPoint类型的私有

成员变量:m_ptOrigin,在视类的构造函数中将此变量初始化为0。在鼠标按下消息响应函数中,保存

该点,代码如下:

void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point)

{

2

// TODO: Add your command handler code here

m_nDrawType=2;

// TODO: Add your command handler code here

m_nDrawType=3;

// TODO: Add your command handler code here

m_nDrawType=4;

// TODO: Add your command handler code here

m_nDrawType=5;

// TODO: Add your command handler code here

m_nDrawType=6;