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