使用Visual Studio进行MFC单文档下的菜单绘图(直线、三角形、正方形、逐渐向中心收缩的矩形) 您所在的位置:网站首页 ps绘制钟表教程三角形 使用Visual Studio进行MFC单文档下的菜单绘图(直线、三角形、正方形、逐渐向中心收缩的矩形)

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

2024-07-14 12:17| 来源: 网络整理| 查看: 265

一、创建单文档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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有