https://github.com/dingjiecn/OpenDraw.git打算做一個開源的矢量繪圖軟件(類似MS Visio),花了幾天把程序框架做了出來,自認比DrawCLI的稍微好一點點。支持基本圖形繪制,旋轉,縮放,串行化。使用MFC、STL、GDI/GDI+和一點點設計模式。
自知做一個堪用的矢量繪圖軟件是個非常艱巨的事情,不過還是打算用一些業余時間把這件事情做了,對自己以往掌握的知識,也是一個總結。
編譯好的可執行程序程序0.01版本源代碼在
這里可以下載
posted on 2008-01-29 18:16
小四 閱讀(11670)
評論(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,學習下。
謝謝
回復 更多評論