如何基于MFC制作简易绘图软件

文章目录

  • 一、构造软件的界面
  • 二、画出图形
  • 三、图形的保存与重绘
  • 四、程序下载

一、构造软件的界面

首先新建一个MFC的工程,进入之后按F5调试,可以看到现在的界面

如何基于MFC制作简易绘图软件
进入资源视图–>myxxxxxx.rc–>toolbar->IDR_MAINFRAME_256
新键入图形按钮“线段”,并修改其ID为ID_Line
如何基于MFC制作简易绘图软件

然后点进xxxxxxxview会找到一个对应的函数,但内容为空,所以我们可以定义int型的标志type,在函数中写入type=1,表示点击“线段”按钮时type=1,可以作为之后导向画线段函数的标志。

要制作绘出圆形矩形甚至画笔颜色以及形状都可以如法炮制
最终调试时的软件界面如下

如何基于MFC制作简易绘图软件

然后在xxxxxxview文件中添加鼠标点击,鼠标移动,鼠标抬起,三个消息处理函数

如何基于MFC制作简易绘图软件

此时调试,画直线时会发现有重影,这是因为鼠标每次移动都新设立了一个终点,也就是每次鼠标的移动都会新画一条线,但只有最后一条线才是我们想要的,可之前画出的线也还留在画布上,这个时候我们需要在画线前用一支反色笔(使用其他颜色的时候,这个反色笔其实是背景色,但如果这条线如果是白色的话,反色笔的颜色将会是黑色)把上一条线覆盖掉,即画出a线,接着鼠标移动画出了b线的同时会用一支白色的笔把a线覆盖掉,最后画布上只剩下b这一条线。

如何基于MFC制作简易绘图软件

那么问题又来了,在vs2019的环境下,画好a线时会出现一条从坐标原点到a线起始点的黑线,我推测在画第一条a线的时候会有一条默认从坐标原点到起始点的白线,然后在反色笔的影响下变成了黑色,画出a线时会有一条从原点到a线起始点的黑线。所以我们要做一个标志,判断下我们现在画的是第几条线,如果是第一条线,那我们就需要绕开反色笔涂抹那一段程序,如果不是第一条线,那么就不用绕开。

如何基于MFC制作简易绘图软件

这样之后就可以正常的画出直线了

如何基于MFC制作简易绘图软件
圆与矩形也可以用类似的流程来绘出,不过圆需要设置圆心点和计算半径,矩形则需要设置起始点和对角点。
当然如果想改变线的颜色和形状的话

三、图形的保存与重绘

大家可能已经发现通过第二部分画出的直线是无法保存的,也就是说将窗口最小化后再打开时画的的直线就不见了,所以我们需要画完每一条直线后将其保存,并且一直重新绘制它
至于如何保存直线的数据,并且提取它的数据来绘制,这里就要用到链表了

**Clist.h**#pragma once#ifndef Clist_h#define Clist_h#include#includeusing namespace std;struct Node{	int now_RGB;//储存画笔颜色	int now_line;来源:asf dadha kqrklad
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月25日
下一篇 2020年11月25日

相关推荐