一、创建单文档MFC工程
1、打开vs,创建新项目
选择MFC工程(我是之前创建过,如果左边没有,可以在右侧输入框输入MFC),然后点击下一步。
2、选择单文档
输入工程名字,点击右下角创建后,弹出基于对话框、单文档、多文档等形式创建,此时选择单文档,如下图所示。
二、修改菜单
1、增添绘图项
在右侧资源视图Menu目录下的IDR_MAINFRAME文件,双击打开,出现菜单列。
点击空白的请在此处键入,输入“绘图”,按下回车。会进入绘图下的子菜单,分别输入直线、三角形、正方形。
依次双击新建的按钮 或者 右键选择属性(直线、三角形、正方形),将其“属性”中的“弹出菜单(pop up)”改为False,一般默认False,不需更改。
2、添加响应函数
更增添的按钮添加响应,右键,选择“添加事件处理程序”。
消息类型选择commend,类列表选择“C+文件名+View”,点击创建。不难看出我在创建工程时的文件名是CMFCApplication1。
四、代码
1、直线
经历上一步,跳转到 “文件名+View.cpp” 的文件中,在函数 “void CMFCApplication1View::On32771()” 下,找到的 “// TODO: 在此添加命令处理程序代码”,输入按下按钮需要执行的操作即可。
直线代码:
CClientDC dc(this);
CPen NewPen; //创建画笔
//PS_SOLID 实线,PS_DASH 虚线,PS_DOT 点线,PS_DASHDOT 点化线,PS_DASHDOTDOT 双点化线
NewPen.CreatePen(PS_SOLID, 5, RGB(255,0,0));
dc.SelectObject(NewPen);
dc.MoveTo(30,150);//起点
dc.LineTo(200,10);//终点
效果(编译后,点击绘图子菜单的直线,面版上出现一条红色直线):
2、三角形
操作同直线一样,不过多赘述。在此放上代码如下:
CClientDC dc(this);
CPen pen(PS_SOLID, 5, RGB(138, 43, 226));
CPen* oldPen = dc.SelectObject(&pen);
CPoint pt[3] = { CPoint(280,20),CPoint(490,20), CPoint(260,200) };
dc.Polygon(pt, 3);
编译效果:
3、正方形
我在画三角形和正方形时,用的都是Ploygon方法,简单的把 pt[3] 改为了pt[4],并在其等号后加了一个点。
代码示例:
CClientDC dc(this);
CPen pen(PS_SOLID, 5, RGB(50, 205, 50));
CPen* oldPen = dc.SelectObject(&pen);
CPoint pt[4] = { CPoint(580,20),CPoint(770,20), CPoint(770,210),CPoint(580,210)};
dc.Polygon(pt, 4);
编译结果:
4、向中心收缩的矩形
可以参考上一个正方形的例子,把边框的点改一下,转为矩形。外加一个for循环就可以了。如果想产生动画效果:一步一步向中心收缩的矩形画出,加一个sleep()函数即可。
代码如下:
void CMFCApplication1View::On32777()
{
// TODO: 在此添加命令处理程序代码
CClientDC dc(this);
CPen pen(PS_SOLID, 3, RGB(0,128,255));
CPen* oldPen = dc.SelectObject(&pen);
for (int i = 0; i <6; i++) {
CPoint pt[4] = { CPoint(30+i*20,260+i*20),CPoint(400-i*20,260+i*20), CPoint(400-i*20,490-i*20),CPoint(30+i*20,490-i*20) };
dc.Polygon(pt, 4);
Sleep(1000);
}
}
编译结果:
本文到此就结束了,我也在新学阶段,有问题可留言讨论哦~