0


使用Visual Studio进行MFC单文档下的菜单绘图(直线、三角形、正方形、逐渐向中心收缩的矩形)

一、创建单文档MFC工程

1、打开vs,创建新项目

    选择MFC工程(我是之前创建过,如果左边没有,可以在右侧输入框输入MFC),然后点击下一步。![](https://img-blog.csdnimg.cn/13b4239f383d4a60ad4ce376633b742f.png)

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);
    }
}
    编译结果:

本文到此就结束了,我也在新学阶段,有问题可留言讨论哦~

标签: visual studio c++ mfc

本文转载自: https://blog.csdn.net/qq_42041632/article/details/133885607
版权归原作者 是阿静呀 所有, 如有侵权,请联系我们删除。

“使用Visual Studio进行MFC单文档下的菜单绘图(直线、三角形、正方形、逐渐向中心收缩的矩形)”的评论:

还没有评论