小四的海市蜃楼
Never surrender to complexity
posts - 21,comments - 59,trackbacks - 0
https://github.com/dingjiecn/OpenDraw.git

打算做一个开源的矢量绘图软件(类似MS Visio),花了几天把程序框架做了出来,自认比DrawCLI的稍微好一点点。支持基本图形绘制,旋转,缩放,串行化。使用MFC、STL、GDI/GDI+和一点点设计模式。

自知做一个堪用的矢量绘图软件是个非常艰巨的事情,不过还是打算用一些业余时间把这件事情做了,对自己以往掌握的知识,也是一个总结。

编译好的可执行程序
程序0.01版本源代码在这里可以下载
posted on 2008-01-29 18:16 小四 阅读(11614) 评论(37)  编辑 收藏 引用 所属分类: 图形图像与计算几何

FeedBack:
# re: 打算做一个开源的矢量绘图软件
2008-01-29 22:15 | ood
支持你,看代码也是一种很好的学习。
有时间的话,我也很想为它写些代码,因为我对这类软件也很感兴趣。
希望能坚持下去。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-29 23:39 | giscn
支持一下,建议不要受DrawCli 的影响,DrawCli的架构不是很好,接口不清。CODShape 与数据鼠标的操作相关的虚函数比较多,可以有更好的办法。另外,最好不要用MFC, CObject CPoint 之类,并且CDC 作为核心的绘图上下文环境是不够的。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 09:20 | teli
# re: 打算做一个开源的矢量绘图软件
2008-01-30 09:48 | 追梦时代
支持楼主  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 10:08 | 小四
谢谢,因为目标是开发一个类似MS Visio的东西,或许做成COM组件让更多人可以重用,我也不知道有没有那个精力坚持下去。
to ood:
这么简陋的东西也放出来的目的是让刚刚接触OO的同学可以参考一下。如果真的能写个七七八八以后,我会把项目放到codeproject上给更多人参考。
to giscn:
我会再参考一下别的绘图软件的框架,我也想摆脱对MFC的依赖。
to teli
qcad商业软件太好太强大,貌似不开源,而且跟我目标不一样。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 11:37 | 梦在天涯
坚持!  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 12:11 | lunny
支持一下,建议考虑跨平台的问题,也许可以使用wxwidgets。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 20:26 | giscn
UCanCode 好像有类似visio 的东西,应该还可以找到其他类似的代码,自己琢磨如何做也不错,COM 只是接口封装而已,以 COM 方式设计主框架接口并不好,COM 与 C++的设计习惯并不相同,采用C++, 体现接口的思想足矣,GIS 行业有用COM 设计主框架的:ESRI 的 ArcGIS, 现在看来臃肿,反而成了累赘,其实在2000年前后看到他们的设计就觉得他们的设计思路不合理。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 20:27 | 过客
有一本海外华人写的基于JAVA的面向对象设计中进行了一个类似系统的OO分析和设计,楼主有兴趣可以参考一下。
中间主要提到了有一个canvas类,作为各种shape的容器,各种shape从一个虚类继承。

希望楼主坚持,本人关注了挺久,希望有一个在图像处理程序用中的轻量矢量图形库,主要用于感兴趣区域等的描绘。一直没有找到合适的。
所以如果楼主可以支持前面矢量图形与后面背景图像的嵌入以及串行化。那是最好了。

如果要做到平台无关,希望将具体绘制代码与其他分离设计,这样可以更换图形绘制部分使用MFC还是wxwidgets之类。
如果要使用方便,希望鼠标消息如果能提供一个封装,然后提供一个和具体环境鼠标消息的接口。

以上是个人一些愚见,希望对楼主有帮助。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 20:33 | giscn
to 楼上的 过客:
是JGraph 还是其他? 感觉JGraph 设计太罗嗦  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 20:39 | giscn
to 楼上的 过客:
其实你说的区域描绘, 加上图像,用java 做不复杂,代码量在100~100 K, Graphics2D 就已经实现了很多算法,基本没有社么复杂的算法要自己实现  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 20:40 | giscn
笔误,是100~200k  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 20:45 | 过客
那本书里面提到的是基于UML演练对这样一个系统进行的分析与设计,但是我觉得那个设计不光是一个例子,实际也有些价值,他是希望从底层开始分析和设计这样一个系统,具体上层是否用JGraph是无所谓的。

我一下忘记这本书名字了,记得网上有人评价不是很好,但是很快有人回复说其实作者是有很多年设计经验的比较实在的作品,我也觉得作者的分析和设计是不错的。

现在我是希望能用c++实现,主要实现一个canvas类,包含一个通用的鼠标操作,提供一个graph类,底下继承一些常用的图形。包括橡皮框。canvas类提供对这些形状的管理。
外部提供一个鼠标接口和一个GUI接口,具体实现鼠标消息传入和图形绘制,一些与平台有关的代码就分离在这儿。
  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-30 20:53 | 过客
可能不是很复杂,但是我一直也没有找到一个轻量级的稳定的版本。
希望楼主的系统能否往这个方向发展一下,比较好嵌入到其他系统中。
就像CXImage这样的开源图像读取系统,只完成一个方面的功能,但是很稳定,比较全面,可以很方便地作为很多大系统的一部分。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-31 09:11 | teli
另外再给点建议,建议统一绘制引擎,这是关键,呵呵  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-31 09:13 | teli
我有 QCAD 的源码,需要跟我联系

teli_eurydice@163.com  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-31 09:24 | 小七
这个我已经做过了,基于GDI+,实现了visio基本画图功能,包括:line/shape 的绘制,以及线形线宽箭头内部填充的设置,随意的组合分解,文本、图片图元等。office文档导入,问题是只能保存成自定义格式  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-31 11:56 | 小四
说说我所知道的情况,我看过的非开源优秀矢量控件:

Vector Graphics ActiveX (C++ 优秀)
http://www.script-debugger.com/products/prographer/ax
Diagram Studio (Delphi 优秀,轻量,好使,便宜)
http://www.tmssoftware.com/diagram.htm
Visual Graph (Delphi 国产,强大)
http://www.visual-graph.com
TCAD (Delphi 国产,优秀,轻量,好使,贵)
http://www.codeidea.com/cn/
UCanCode Form++ (C++ 国产,强大,贵,到处做广告)
http://www.ucancode.com/index.htm
MicroDraw C++ (国产,专业)
http://www.microdraw.com/
集成了绘图功能的开源工具或控件:
OpenOffice,DIA,Inkscape,JGraph
我最喜欢Inkscape,它们都很强大,可是集成到自己的程序中比较困难。

就像过客说的,无法找到一个轻量的稳定的尤其是免费的东东嵌入到自己的程序中来。也许是因为有嵌入矢量绘图功能需求的程序,都是很复杂的专业程序,免费的粗糙的东西,一般都满足不了需求,所以才会出现那么多昂贵的矢量绘图引擎。如果有谁能够开发一个稳定的,开源并且好扩展的控件,让每个人的报表中都秀一把鼠标绘图,也许是个好消息。
to teli
谢谢。
to giscn
说的是Arc Object吗?确实太复杂了。我用感觉Map Object还不错,不过功能太有限。做的最后一个GIS项目用的是ArcIMS,不理解这么弱的东西为什么卖那么贵。据说现在的ArcGis Engine很不错,没用过了。
to 小七
可以考虑用开源的dxf的读写库,另外,能参考一下你的程序吗。我的信箱cugdj@163.com
  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-31 20:58 | giscn
说的是 ArcObjects, 可以当成一个过度设计的典型,MapObjects 用的是ActiveX, 接口简单,但是不易扩展,如果想增加一些核心功能基本不可能,虽然ActiveX 也可以说是COM, 但与ArcObjects 用COM 来建构系统是两码事,ArcEngine 与ArcObjects 是一样的东西只是做了个小调整,增加了一些控件而已,本质上并无区别。
绘图软件的需求很不相同,比如AutoCAD,功能很强大,但是对付GIS 这样数据量大的环境就不行,像visio 与AutoCAD 的区别也是很明显的,工具性质的软件都是有很强的针对性,感觉目标如果大而全,架构难以兼顾。只是个人见解,欢迎探讨  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-01-31 21:01 | giscn
其实QCAD 的源码就在网上,还有dxflib :
ftp://ribbonsoft.com/archives/qcad/qcad-2.0.5.0-1-community.src.tar.gz
dxflib:
http://www.ribbonsoft.com/archives/dxflib/dxflib-2.0.4.8-2.src.tar.gz

简单试了一下,dxflib还支持 2004,不错  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-02-01 10:03 | daids
QCAD的用来学习还是很不错的  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-02-01 10:24 | houzi
支持  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-04-11 00:26 | wonder
支持,兄弟  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-05-22 23:39 | VC++
我是一个VC初学者,看了“打算做一个开源的矢量绘图软件”这篇文章里面,我下了你的程序,可是编译的时候出错,错误是我是一个VC 的初学者,下载了你的软件,可以编译的时候出错啊,错误是fatal error C1083: Cannot open include file: 'GdiPlus.h': No such file or directory,找了一下,是没有这个GdiPlus的文件啊,想请教一下是何原因?  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2008-11-12 14:33 | rhf rhf
可以看看这个矢量绘图软件http://www.visual-graph.com  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2009-07-31 16:55 | eric_chen
一个轻量级的矢量绘图软件库
http://picasso-graphic.googlecode.com/files/picasso_0.9_beta1.zip

email: onecoolx@gmail.com  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2009-08-26 10:20 | eric_chen
# re: 打算做一个开源的矢量绘图软件
2009-11-24 09:26 | dxwang
不错,学习了,继续关注  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2010-03-02 22:45 | jasonchen
有没有继续??  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2010-11-21 11:20 | xiao_liang
@VC++
下个vc 6.0的Gdi+,放到工程目录下  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2011-03-10 17:59 | 学生
现在进度如何了?有delphi版吗?  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2012-02-29 14:37 | 张云贵
请关注和参与“跨平台轻量级矢量图形框架”graph2d:
https://github.com/rhcad/graph2d

目前正在开发iPad/Android等触摸屏上的绘图平台,高手们敬请参与审核改进
开发讨论区: http://q.weibo.com/1769667  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2014-02-07 15:22 | guoj
你好,看了你编译后的程序<编译好的可执行程序>,感觉你做的真好:)
另外,我是特别支持你用MFC来开发这个轻巧的矢量图程序。

不知道是否可以跟你联络上,我的QQ是:357 400 898,希望能够联系上.

  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2015-04-29 01:09 | sh
我用VB做了一个,功能比这个要强大,没有"基于"什么,但有些地方没有这个科学,学习一下.  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2015-07-31 18:55 | wangyou
我也刚开始做矢量绘图方面的设计。框架比较重要。不知道大家有没有edraw的控件开发经验交流的。https://www.edrawsoft.com/edboard.php 直接用比较方便。但是貌似它们已经不提供更新了。  回复  更多评论
  
# re: 打算做一个开源的矢量绘图软件
2016-01-17 22:43 | djz
这个编译好的 对于代码在哪里?

麻烦发一份到 djzbj@163.com,学习下。
谢谢  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理