1. 圖形文件和圖形庫是統(tǒng)一的 XML 格式
Visual Graph 采用圖形文檔和圖庫文檔統(tǒng)一的 XML 格式,你可以任意自由地畫圖,任意設計屬性、函數(shù)、事件,這樣相當于給圖形賦予了生命,設計好的圖形文件馬上就可以被當作圖庫來使用,這樣通過多層嵌套,就可以設計非常復雜的圖形出來,結(jié)構(gòu)相當緊湊。
2.一個文檔包括多個頁面圖形
你可以在一個文檔內(nèi)包含多個畫面,而當這個文檔被用作圖庫的時候,每個畫面又被當作一個個元件來使用了,整個系統(tǒng)形成完備的整體。
3. 頁面支持多圖層,圖層可以隱藏或鎖定
畫很大的圖時,有可能需要建立多個圖層,例如地理圖上的道路、電力設施、水管、商店、政府部門等可以分別設定在不同的圖層上,圖層其實就是頁面。
4. 通過幾種基本圖形,可以制作任意種類繁多的元件
一切復雜的圖形元件都來自于幾種簡單的基本圖形,基礎(chǔ)圖形越少,整個系統(tǒng)的架構(gòu)越靈活可靠。如果把各種專用圖符等放在系統(tǒng)內(nèi)部,當作不同的類別實現(xiàn),這樣,系統(tǒng)結(jié)構(gòu)就很松散而且難以學習了。
5. 可以進入元件內(nèi)部編輯其細節(jié)
需要專門的圖庫編輯軟件么?不需要,只要在Visual Graph集成環(huán)境中,就可以隨時進入元件的內(nèi)部,修改其細節(jié)。
6. 線條編輯,允許插點,刪點,畫曲線,直線
允許在線條上插入頂點,刪除頂點。線條的每個頂點除了有 x 和 y 兩個坐標值以外,還有一個頂點屬性值,用來描述這個頂點的畫法。通過簡單改變頂點的屬性,一條折線可以變成曲線,可以變成兩段不相連接的折線。
7. 直接在畫面上編輯文字,文字自由旋轉(zhuǎn)
文字編輯方式自然,即使文字單元有旋轉(zhuǎn),編輯方式不變,甚至輸入光標也會跟著旋轉(zhuǎn)。
8. 無數(shù)次的 Undo 和 Redo
能夠?qū)^大多數(shù)操作進行撤銷和恢復,不是簡單地規(guī)定撤銷和恢復多少次,而是根據(jù)內(nèi)存狀況采用優(yōu)化的調(diào)度策略,許多方面,盡管用戶可能很少用到,但都盡量節(jié)約內(nèi)存使用。
9. 簡單易學的Visual Graph語言
純面向?qū)ο竽_本語言,結(jié)構(gòu)簡單,語法只有簡單的幾條,變量也不需要定義,直接任意賦值。比起其他流行的編程語言,更加簡潔明快、高效。
10. 每個圖形都可以設置透明度,填充、線條也可以設置透明度
11. 可以導入導出svg格式的圖形文件
對svg的支持,可以使用網(wǎng)上巨量的svg圖標庫。
12. 文檔打印紙可以自由設定大小和縮放比例
打印無級縮放,多大的圖形都可以放在一張紙上打印,而打印效果直觀地顯示在畫面上,只要顯示打印紙,就可以清楚看到打印紙的位置,你可以用鼠標改變它的位置和大小。打印紙越小,相對來講打印出來的圖形就越大,反之,打印紙越大,打印出來的圖形就越小,而所包括的圖形也更多。不需要模擬顯示。
13. 打印和設備無關(guān)
畫面打印情況只與打印紙、圖形的相對位置有關(guān),與設備無關(guān)。所有頁面共用同一張打印紙。
14. 支持圖形分組
允許建立若干個圖形組,這些組被保存進文件,這樣可以方便地對圖形進行分組管理和編程。例如,在一幅地圖上,把所有房子建立一個數(shù)組,把所有公用設施按照類別分別建立一個數(shù)組等。
15. 多種連接線,十分靈活,可以建立圖形間的拓撲關(guān)系,自由添加連接點
有直線連接線,曲線連接線,平直連接線。元件內(nèi)部可以自由設置任意個數(shù)的連接點,圖形的連接點數(shù)目以及每個連接點關(guān)聯(lián)的圖形、連接點的位置都可以用程序訪問,也可以用程序設置兩個圖形相連接?梢跃帉憟D形拓撲分析程序。
16. 多種箭頭風格,并可以任意自定義箭頭
內(nèi)置常用幾種箭頭風格,滿足大多數(shù)時候的需要,如果箭頭不夠,可以修改箭頭庫文件(arrows.tbl),實際上,箭頭庫也是圖形文件,也可以在 Visual Graph 中進行編輯。
17. 自定義線型
線條有多種表現(xiàn)形式,可以修改每種線型的具體形狀。
18. 自定義圖案
圖形填充圖案全都可以自行設計,還有透明圖案、過度填充圖案等,能夠滿足絕大多數(shù)需要,圖案可以自定義樣式。
19. 支持多種類型定位,但優(yōu)先連接關(guān)系定位
圖形可以方便定位,例如繪制線條時,可以把頂點定位到柵格、其他線的頂點、中點、交點等。
20. 支持圖形多種對齊方案
21. 圖形支持任意角度自由旋轉(zhuǎn),旋轉(zhuǎn)中不改變圖形其它邏輯
任何圖形元件都可以任意角度自由旋轉(zhuǎn)。旋轉(zhuǎn)后,圖形的邏輯關(guān)系不變,運算程序能夠正常運行。例如棒圖、餅圖、曲線圖、甚至頁面上所有圖形一起都可以隨意旋轉(zhuǎn)而正常工作。過渡填充、圖片、箭頭、文字光標自動旋轉(zhuǎn)。
22. 元件可以添加填充色、線色、線條形狀等多種自定義屬性
元件內(nèi)部沒有定義相關(guān)屬性的基本圖形可以繼承這些屬性。
23. 自定義字符串屬性
當程序員想給圖形添加一些特定的數(shù)據(jù)時,可以給這個圖形隨便增加自定義屬性,對自定義屬性的讀寫、存儲等操作和對固有屬性沒有區(qū)別。
24. 自定義任何屬性,類似流行編程語言中“屬性”的概念
把一些流行編程語言( Delphi 、 C# 等)的“屬性”概念引入到 Visual Graph 中,從而使得系統(tǒng)變成了一種似乎無所不能的面向?qū)ο缶幊陶Z言。你只需要簡單地修改一個屬性的值,就可以驅(qū)動圖形做任何復雜的變化。
25. 自定義函數(shù)(私有、公有函數(shù))
既然有腳本,就離不開自定義函數(shù),函數(shù)按照作用域的不同,分為私有函數(shù)、公有函數(shù)、引出函數(shù)三種,如果一個函數(shù)只想被內(nèi)部的其他圖形訪問,可以使用私有函數(shù),如果允許外部圖形訪問,可以使用公有函數(shù),如果這是一個觸發(fā)事件,則可以使用引出函數(shù)。這些非常符合一般面向?qū)ο缶幊陶Z言的習慣。函數(shù)與過程的區(qū)別僅在于是否在 return 后面有返回值。函數(shù)參數(shù)沒有顯式的類型,會根據(jù)調(diào)用者的參數(shù)決定。這樣設計的結(jié)果,使得腳本在形式上更加簡潔。
26. 眾多的圖形操作事件,例如在鼠標點擊、移動、圖形縮放、創(chuàng)建、刪除時觸發(fā)
每個圖形都有自己的事件,例如,在運行狀態(tài)下,當鼠標單擊時,會優(yōu)先執(zhí)行最上面那個圖形的鼠標單擊事件中的腳本程序。圖形創(chuàng)建時、刪除時、繪制后、鼠標移入移出等都有相應的腳本事件。如果程序員只想把 Visual Graph 當作一般COM組件使用,也可以利用本身的眾多事件。這兩套事件體系是不一樣的,每個圖形都有自己的事件,這些事件是 Visual Graph 內(nèi)部規(guī)定的,而 ActiveX 的事件是遵循國際標準接口。
27. 無級別縮放,比例巨大
圖形任意放大和縮小 ,由于采用浮點數(shù),放大很多倍后,可以精確編輯圖形。當圖形縮放的時候,字體會縮放,但是線條的寬度可以設定是否縮放,有的時候,放大以后要對細節(jié)進行編輯,應該設定線條寬度禁止縮放,而打印的時候,則應該使用線條寬度縮放選項。
28. 元件允許引用其他圖形
通過修改元件的lib屬性,可以改變元件的引用對象。
29. 包括一個功能非常齊全的屬性列表控件,這樣對于圖形程序的開發(fā)就更方便了
只通過一條簡單的命令,就可以把圖形和屬性列表控件聯(lián)系起來,在屬性列表控件中對圖形進行全方位的編輯。這個屬性列表控件也是一個圖形文件,用戶熟練以后可自行編輯修改。
30. 支持讀取互聯(lián)網(wǎng)服務器圖形文件
直接讀取互聯(lián)網(wǎng)上的圖形文件,無需下載。
31. 支持圖形從內(nèi)存讀寫
整個 Visual Graph 文件是 XML 文檔格式,程序員可以把文件存放在數(shù)據(jù)庫中,進行讀寫。 每個圖形也有自己的XML格式,可以單獨存取。
32. 支持移動圖形到屏幕中間,滾動屏幕,手抓屏幕滾動
有一些有關(guān)屏幕操作的函數(shù),幫助程序員更好地控制畫面顯示的內(nèi)容。
33. 用程序或者腳本繪圖
這也是基本功能,可以用腳本或者其他程序動態(tài)生成各種圖形、頁面、單元組、甚至圖形之間的連接關(guān)系。
34. 甚至最基本的圖形繪制也可以自定義
通過修改系統(tǒng)缺省圖庫(library.tbl),繪制最基本的圖形時,都可以設置其初始狀態(tài)。
35. 圖形鎖定和解鎖,按住 ALT 鍵可以操作加鎖的圖形
圖形基本功能,鎖定后的圖形,不能簡單地用鼠標選中和編輯。
36. 支持自定義提示信息
每個圖形(包括頁面)都有一個 Hint (提示)屬性,設置這個值,當鼠標在圖形上面停留一會,在鼠標附近就會出現(xiàn)一個小窗口顯示這個字符串。提示信息的顯示和隱藏時間間隔均可以通過系統(tǒng)參數(shù)設置,提示信息窗口允許自行繪制。
37. 元件自定義連接點
元件可以添加任意多個連接點。
38. 元件自定義控制點
在元件設計時,可以放置任意多個控制點,將來這些控制點將允許用戶鼠標拖動操作,當鼠標拖動操作的時候,會執(zhí)行 OnNodeChange 事件,在元件內(nèi)寫好這個事件的腳本程序,元件就可以按照你的意愿變化形狀了。如果一個元件定義了兩個以上的控制點,并且這些控制點又同時是連接點時,這個元件將來不會出現(xiàn)選擇框。
39. 支持各種儀器儀表、刀閘、開關(guān)、信號燈、曲線圖、棒圖、餅圖開發(fā)
給這些設備圖形添加自定義屬性,儀器儀表可以添加最小值、最大值、當前指針值等屬性,改變這些屬性,儀器儀表就會發(fā)生變化(例如指針旋轉(zhuǎn))。刀閘、開關(guān)可以添加開關(guān)屬性,改變這個屬性,開關(guān)的樣式也發(fā)生相應的變化。信號燈可以添加當前狀態(tài)屬性,允許根據(jù)屬性不同,信號燈的狀態(tài)發(fā)生變化。這些在其他圖形軟件里面非得使用插件才能實現(xiàn)的功能,在 Visual Graph 看來,卻是如此簡單。
40. 支持各種按鈕的開發(fā)
由于圖形有鼠標左鍵按下和放開的事件,只要在鼠標按下的事件里讓圖形產(chǎn)生一個變化,在鼠標放開時恢復這個變化就可以了。
41. 元件的鏈接和嵌入
如果圖上有大量相同的圖形(比如很多刀閘),圖形采取鏈接方式比較好,這樣能夠大大減少文件的體積,更快地載入文件。圖庫改變后,下次載入圖形文件也相應會反映這種改變。
42. 允許混合編程,互相調(diào)用,不僅您的程序可以操控 Visual Graph 的一切技術(shù),而且 Visual Graph 的腳本可以調(diào)用執(zhí)行您的任何程序
在 Visual Graph 中出現(xiàn)的任何圖形、任何屬性、任何函數(shù)都是可以在自己程序中訪問的。
另外, Visual Graph 可以訪問程序員自己語言中的函數(shù),這是一個非常特殊而且重要的功能,因為現(xiàn)有的腳本語言不可能窮盡所有的功能,事實上,它是一種非常簡單的語言,所含功能性的函數(shù)很少,因此,在某些情況下,你可能需要擴充這種腳本語言的功能。例如日期訪問、數(shù)據(jù)庫訪問等等。使你不用擔心將來功能不夠怎么辦的問題。
43. 支持擴充功能函數(shù)
Visual Graph 可以調(diào)用外部函數(shù)庫中的函數(shù),例如 Windows API 函數(shù)等。
44. 可以制作對話盒、子窗口、彈出式窗口、菜單等窗口元素。
在很多情況下,用 Visual Graph 做這些窗口元素比起用編譯語言做有更多的優(yōu)勢,因為它不是編譯語言做死的,而是外置的,易于維護修改的,這樣,以后可以輕而易舉地變換軟件的功能?梢灾谱骰A(chǔ)控件,例如菜單、工具欄、按鈕、列表框、下拉框、檢查框等 windows 界面元素。
44. 提供圖形的全部 COM 接口
COM 接口能夠方便程序的編寫,接口屬性和函數(shù)在基本形態(tài)上和 Visual Graph 內(nèi)部的腳本語言完全一致,這樣有利于學習和記憶。只可能因所用編程語言的不同,而有些形式上的改變,例如在 VC 中,沒有屬性這個概念,所有的屬性都被變成 Get 和 Set 函數(shù)了。