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;


发布评论