MFC绘图板(三)

news/2024/11/15 7:34:21/

1、接前文《MFC绘图板(二)


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)以单文档工程为基础,将视图切分为上下两个部分,上部分用于放置各种选着面板,例如颜色面板、线条面板、绘图工具面板等;下部分用于绘图;

(2)第一版程序绘图使用纯GDI实现,主要响应鼠标左键的三个消息绘图:一次绘图操作以鼠标左键按下开始,至鼠标左键释放结束,期间响应鼠标移动,绘出相应的轨迹。

(3)前文提及的绘制曲线是指:根据鼠标移动的轨迹,绘出相应的线条;具体实现时采用绘制多条顺序相连的极短直线来实现此功能,将这些首尾相连的点的坐标保存下来,使用STL;

(4)绘制直线、矩形和圆形可以归为一类,只要给定两个点的坐标,就能绘制直线、矩形或是椭圆,将这两个点保存下来:


(5)创建一个绘图类,将绘图操作封装,进行一次绘图操作就new一个绘图类的对象,并把该对象的指针存入list中,进而达到保存绘图数据的目的;另注:绘图类的构造函数可以针对不同的绘图形式创建相应的实现;

(6)关于撤销功能,即消除一次绘图操作,因为上一条中已经将绘图数据保存下来了,所以该条在实现上应该是很简单的;但是,在实际编程中发现,如果每次重绘都将图形逐个绘制一遍效率太低,特别是在包含大面积的填充操作时,尤其显得速度慢;所以考虑,每次绘图前将当前的图像整个保存,作为下一次绘图的背景,这样效率提升显著。

(7)另外,如果有大量的绘图操作,都应在内存DC中绘制,然后整个拷贝;

(8)关于“油漆桶”功能的实现,使用注入填充算法或边缘填充算法,

详见:http://blog.csdn.net/wwkaven/article/details/40710721

http://blog.csdn.net/wwkaven/article/details/40713929

(9)以上填充算法在MFC中的纯GDI环境下,实现的速度较低,即使现在内存DC中调用填充函数,填充大面积区域依然较慢,哪位有好的办法可以留言,先多谢了;

(10)... ...

5、最后,放一张目前程序的截图:



6、待续... ...




http://www.ppmy.cn/news/251521.html

相关文章

绘图板程序设计及其具体实现 第一篇

成果展示 首先展示几个使用本绘图板程序的绘图成果。 下面是程序的功能介绍(也是由本绘图板程序绘制的)。 总体架构 由三个包和一个主窗口类构成,utils包中为绘制图形中用到的所有工具类,element包中为所有的图形元素类&#xf…

creo 6.0—02:单位的设置,默认绘图模板的绘制(重点)

1、3 单位的设置 我们一般设计都是公制单位,但是 creo 都是默认为英制单位。 修改单位的方式如下: 1、点击 文件——准备——模型属性 2、然后点击单位——更改: 点击更改后会弹出如下的对话框。 选择毫米牛顿秒: 3、选择设置…

SCI论文绘图—Python绘图常用模板及技巧

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material

绘图板应用讲解计算机,电脑绘图板怎么用?基础电脑绘图板入门教程!

电脑绘图板怎么用?电脑绘图板也就是我们平常说的数位板,简称板绘,百科的解释是运用数码现代技术在电脑上进行描绘、上色等绘画操作。相对于手绘而言,板绘易于修改,上色方便,便于携带等优势让很多人开始学习…

MFC绘图板(一)

该程序基于VS2010 SP1,MFC单文档结构 1、创建项目: (1)利用MFC想到创建一个单文档工程: (2)选择单文档,MFC标准 (3)选择经典菜单,传统工具栏&am…

Qt——绘图板

mainwindow.cpp: myDialog.cpp:

中国数字绘图板行业市场供需与战略研究报告

数字绘图板市场的企业竞争态势 该报告涉及的主要国际市场参与者有Wacom、Huion、UGEE、ViewSonic、Samsung、Hanwang、Bosto、PenPower、AIPTEK、Adesso等。这些参与者的市场份额、收入、公司概况和SWOT分析都包含在数字绘图板市场调研报告中。 产品分类: 1024级 …

matlab科研绘图模板,直接奉上源代码!

之前获取本文的模板要求需要大家分享推文到朋友圈并获取点赞,但这样的操作实在是不合理,既然不合理咱就得改。为此,为了方便大家使用,决定不再要求大家分享推文即可直接获取源代码。同时也希望大家多多用matlab作科研绘图&#xf…