
链接到本文:
1. 继续上一篇文章“ MFC绘图板(2)”
2,我认为使用MFC实现绘图程序非常简单,但实际上遇到了许多问题. 以下是开发过程中一些问题的记录:
3. 首先,介绍以下MFC绘图板实现的功能:
(1)MFC绘图板使用Win7随附的绘图程序作为参考,并且基本样式相似;
(2)具有绘制曲线,直线,矩形和圆形的基本图形的功能;
(3)可以设置绘图线的颜色,粗细和类型(实现,虚线,点画等);
(4)要实现类似“油漆桶”的功能,即填充一定的色块;

(5)撤消绘图操作;
(6)动态调整图纸尺寸;
================================================ ==== ======================
注意: 以上6项已基本实现
================================================ ==== ======================
(7)文本输入功能;
(8)部分选择功能;
(9)放大镜功能;

(10)橡皮擦功能;
(11)拾色器功能;
(12)数据保存功能: 当前计划数据以三种格式保存: bmp,pdf和xml;
(13)待定... ...
4. 接下来,介绍MFC绘图版本的实现思路:
(1)基于单个文档项目,视图分为两部分,上部用于放置各种选定的面板,例如彩色面板mfc简易画图板,线条面板,绘图工具面板等;下部用于绘图;
(2)程序绘图的第一个版本是使用纯GDI实现的,它主要响应鼠标左键的三个消息: 绘图操作从鼠标左键开始,直到释放鼠标左键,并响应鼠标的移动,绘制相应的轨迹.
(3)上述绘制曲线是指: 根据鼠标移动的轨迹绘制相应的线;在具体实现中,为了实现该功能,画出多条极短的直线相连,将这些端对端连接起来,使用STL保存点的坐标;

(4)绘制直线,矩形和圆形可以归为一类. 只要给出两个点的坐标,就可以绘制直线,矩形或椭圆形,并保存这两个点:
(5)创建绘图类,封装绘图操作,执行绘图操作以创建新的绘图类对象,并将该对象的指针存储在列表中,以达到节省绘图数据的目的;还要注意: 绘图类的构造函数可以为不同的绘图形式创建相应的实现;
(6)关于撤消功能,即取消绘图操作,因为绘图数据已保存在上一篇文章中,因此本文的实现应该简单;但是,在实际编程中,发现如果每次操作都效率不高,则无法一一重画图形,尤其是在填充操作涉及较大面积的情况下. 它特别慢;因此,请考虑将每个图形之前的整个当前图像保存为下一个图形的背景. 这样可以大大提高效率.
(7)另外,如果有大量绘制操作,则应先在内存DC中绘制它们,然后再绘制整个副本;
(8)关于“油漆桶”功能的实现,请使用注入填充算法或边缘填充算法,
查看详细信息:

(9)在MFC的纯GDI环境中,上述填充算法很慢. 即使在存储器DC中调用了填充功能,填充大区域仍然很慢. 哪一个是留言的好方法,谢谢您!
(10)... ...
5. 最后mfc简易画图板,放入当前程序的屏幕截图:
6. 待续... ...

发表了250篇原创文章·被点赞50个·470,000+次浏览
关注他的留言板
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-154674-1.html
杨洋加油