https://github.com/dingjiecn/OpenDraw.git打算做一个开源的矢量绘图软件(类似MS Visio),花了几天把程序框架做了出来,自认比DrawCLI的稍微好一点点。支持基本图形绘制,旋转,缩放,串行化。使用MFC、STL、GDI/GDI+和一点点设计模式。
自知做一个堪用的矢量绘图软件是个非常艰巨的事情,不过还是打算用一些业余时间把这件事情做了,对自己以往掌握的知识,也是一个总结。
编译好的可执行程序程序0.01版本源代码在
这里可以下载
posted on 2008-01-29 18:16
小四 阅读(11619)
评论(37) 编辑 收藏 引用 所属分类:
图形图像与计算几何
FeedBack:
2008-01-29 22:15 |
支持你,看代码也是一种很好的学习。
有时间的话,我也很想为它写些代码,因为我对这类软件也很感兴趣。
希望能坚持下去。
回复 更多评论
2008-01-29 23:39 |
支持一下,建议不要受DrawCli 的影响,DrawCli的架构不是很好,接口不清。CODShape 与数据鼠标的操作相关的虚函数比较多,可以有更好的办法。另外,最好不要用MFC, CObject CPoint 之类,并且CDC 作为核心的绘图上下文环境是不够的。
回复 更多评论
2008-01-30 10:08 |
谢谢,因为目标是开发一个类似MS Visio的东西,或许做成COM组件让更多人可以重用,我也不知道有没有那个精力坚持下去。
to ood:
这么简陋的东西也放出来的目的是让刚刚接触OO的同学可以参考一下。如果真的能写个七七八八以后,我会把项目放到codeproject上给更多人参考。
to giscn:
我会再参考一下别的绘图软件的框架,我也想摆脱对MFC的依赖。
to teli
qcad商业软件太好太强大,貌似不开源,而且跟我目标不一样。
回复 更多评论
2008-01-30 12:11 |
支持一下,建议考虑跨平台的问题,也许可以使用wxwidgets。
回复 更多评论
2008-01-30 20:26 |
UCanCode 好像有类似visio 的东西,应该还可以找到其他类似的代码,自己琢磨如何做也不错,COM 只是接口封装而已,以 COM 方式设计主框架接口并不好,COM 与 C++的设计习惯并不相同,采用C++, 体现接口的思想足矣,GIS 行业有用COM 设计主框架的:ESRI 的 ArcGIS, 现在看来臃肿,反而成了累赘,其实在2000年前后看到他们的设计就觉得他们的设计思路不合理。
回复 更多评论
2008-01-30 20:27 |
有一本海外华人写的基于JAVA的面向对象设计中进行了一个类似系统的OO分析和设计,楼主有兴趣可以参考一下。
中间主要提到了有一个canvas类,作为各种shape的容器,各种shape从一个虚类继承。
希望楼主坚持,本人关注了挺久,希望有一个在图像处理程序用中的轻量矢量图形库,主要用于感兴趣区域等的描绘。一直没有找到合适的。
所以如果楼主可以支持前面矢量图形与后面背景图像的嵌入以及串行化。那是最好了。
如果要做到平台无关,希望将具体绘制代码与其他分离设计,这样可以更换图形绘制部分使用MFC还是wxwidgets之类。
如果要使用方便,希望鼠标消息如果能提供一个封装,然后提供一个和具体环境鼠标消息的接口。
以上是个人一些愚见,希望对楼主有帮助。
回复 更多评论
2008-01-30 20:33 |
to 楼上的 过客:
是JGraph 还是其他? 感觉JGraph 设计太罗嗦
回复 更多评论
2008-01-30 20:39 |
to 楼上的 过客:
其实你说的区域描绘, 加上图像,用java 做不复杂,代码量在100~100 K, Graphics2D 就已经实现了很多算法,基本没有社么复杂的算法要自己实现
回复 更多评论
2008-01-30 20:45 |
那本书里面提到的是基于UML演练对这样一个系统进行的分析与设计,但是我觉得那个设计不光是一个例子,实际也有些价值,他是希望从底层开始分析和设计这样一个系统,具体上层是否用JGraph是无所谓的。
我一下忘记这本书名字了,记得网上有人评价不是很好,但是很快有人回复说其实作者是有很多年设计经验的比较实在的作品,我也觉得作者的分析和设计是不错的。
现在我是希望能用c++实现,主要实现一个canvas类,包含一个通用的鼠标操作,提供一个graph类,底下继承一些常用的图形。包括橡皮框。canvas类提供对这些形状的管理。
外部提供一个鼠标接口和一个GUI接口,具体实现鼠标消息传入和图形绘制,一些与平台有关的代码就分离在这儿。
回复 更多评论
2008-01-30 20:53 |
可能不是很复杂,但是我一直也没有找到一个轻量级的稳定的版本。
希望楼主的系统能否往这个方向发展一下,比较好嵌入到其他系统中。
就像CXImage这样的开源图像读取系统,只完成一个方面的功能,但是很稳定,比较全面,可以很方便地作为很多大系统的一部分。
回复 更多评论
2008-01-31 09:11 |
另外再给点建议,建议统一绘制引擎,这是关键,呵呵
回复 更多评论
2008-01-31 09:13 |
我有 QCAD 的源码,需要跟我联系
teli_eurydice@163.com
回复 更多评论
2008-01-31 09:24 |
这个我已经做过了,基于GDI+,实现了visio基本画图功能,包括:line/shape 的绘制,以及线形线宽箭头内部填充的设置,随意的组合分解,文本、图片图元等。office文档导入,问题是只能保存成自定义格式
回复 更多评论
2008-01-31 20:58 |
说的是 ArcObjects, 可以当成一个过度设计的典型,MapObjects 用的是ActiveX, 接口简单,但是不易扩展,如果想增加一些核心功能基本不可能,虽然ActiveX 也可以说是COM, 但与ArcObjects 用COM 来建构系统是两码事,ArcEngine 与ArcObjects 是一样的东西只是做了个小调整,增加了一些控件而已,本质上并无区别。
绘图软件的需求很不相同,比如AutoCAD,功能很强大,但是对付GIS 这样数据量大的环境就不行,像visio 与AutoCAD 的区别也是很明显的,工具性质的软件都是有很强的针对性,感觉目标如果大而全,架构难以兼顾。只是个人见解,欢迎探讨
回复 更多评论
2008-05-22 23:39 |
我是一个VC初学者,看了“打算做一个开源的矢量绘图软件”这篇文章里面,我下了你的程序,可是编译的时候出错,错误是我是一个VC 的初学者,下载了你的软件,可以编译的时候出错啊,错误是fatal error C1083: Cannot open include file: 'GdiPlus.h': No such file or directory,找了一下,是没有这个GdiPlus的文件啊,想请教一下是何原因?
回复 更多评论
2010-11-21 11:20 |
@VC++
下个vc 6.0的Gdi+,放到工程目录下
回复 更多评论
2014-02-07 15:22 |
你好,看了你编译后的程序<编译好的可执行程序>,感觉你做的真好:)
另外,我是特别支持你用MFC来开发这个轻巧的矢量图程序。
不知道是否可以跟你联络上,我的QQ是:357 400 898,希望能够联系上.
回复 更多评论
2015-04-29 01:09 |
我用VB做了一个,功能比这个要强大,没有"基于"什么,但有些地方没有这个科学,学习一下.
回复 更多评论
2016-01-17 22:43 |
这个编译好的 对于代码在哪里?
麻烦发一份到 djzbj@163.com,学习下。
谢谢
回复 更多评论