CD在以前的版本(版本6以前)中是帶有表格功能的,叫CorelChart,支持的格式遠(yuǎn)比現(xiàn)在的AI CS和FH MX要多,我記憶中共有十三種之多,只是不支持中文,真的需要中文只能先做好表格后再將問題替換掉?,F(xiàn)在的CD沒有工具直接生成表格了,所以不少人覺得 CD沒有辦法精確生成表格比例圖了。然而,有一點是大家忽略的地方,CD是一個充分考慮端口開放的軟件(這一點其它軟件都很難做到),我們可以通過這個特性來做出自己的算法,以CD能接受的方式將數(shù)據(jù)傳遞過去。
我以下就以精確比例餅圖做為例子,對CD的另一種使用方法——Action Script做以最初步的窺探。
這個樣例的數(shù)據(jù)如下:
對于矢量軟件來說,一個矢量圖形必然有一段與之對應(yīng)的、唯一的描述,這些描述就是軟件執(zhí)行計算所用到的公式中必不可少的參數(shù)。在用戶使用矢量軟件的工具繪制或更改一個圖形的時候,其實就是在更改這些數(shù)。——如果用戶使用的矢量軟件提供可視化數(shù)值功能的話,在你繪圖或更改圖形的過程中你會看到這些參數(shù)的數(shù)值會根據(jù)你的光標(biāo)操作而改變,如:
在這一點上,使用什么矢量軟件并無差別。
需要有Excel一樣的輸入界面——這么個界面就是所謂的“人機(jī)對話”。之所以要有人機(jī)對話,因為人不懂機(jī)器的語言,機(jī)器不懂人的語言。所以繪圖軟件就設(shè)立了很多可視性的界面。隱藏在“人機(jī)對話”后面的就是機(jī)器聽得懂的語言。
CD之所以說它端口開放,因為它的函數(shù)是開放的,遵循VB的格式。也因為它的參數(shù)是開放的,是一個支持VB格式表達(dá)式的變量。換句話說,只要是VB支持的計算方式,CD就支持——這就包括了VB的系統(tǒng)函數(shù)、自定義函數(shù)、數(shù)組等等。
比較成熟的矢量軟件數(shù)值輸入框的數(shù)值都接受簡單的運(yùn)算公式例如:
3+2、20/5........
FH和AI都支持。
但是CD的數(shù)值支持更多,你可以在CD的輸入框中輸入具有優(yōu)先運(yùn)算的表達(dá)式,CD就能按你的意思計算出正確的數(shù)值,如:
(50+20+10+5+2)/360*50
但你在FH和AI中,你做不到。CD甚至還直接支持sin、tag等系統(tǒng)定義的數(shù)學(xué)函數(shù)。感興趣的不妨一試。只是CD的數(shù)據(jù)輸入框太小,無法看完輸入的字符,得比較小心操作,以免誤留殘余字符導(dǎo)致計算出的值并非你想要的數(shù)值而已。
在前面我說到CD支持運(yùn)算公式例如——50/(50+20+10+5+2)*360。這個公式就是餅圖中計算數(shù)據(jù)比例的公式,計算出的值就是qin走在街頭15-20歲PLMM回頭率(為了滿足Qin的奢望,呵呵,把年齡段給放寬了),這是很簡單的數(shù)學(xué)計算,就此帶過。
既然懂得計算公式了就可以開始繪圖了。
先將公式打好。Crtl+C拷貝。
在“扇形終點”中輸入“0”,在“扇形起點”輸入“50/”,然后Crtl+V,實際上“扇形起點”中的輸入值為“50/(50+20+10+5+2)*360”。然后你得到下面圖形:
第二個物體的終點為第一個物體的起點,所以是“50/(50+20+10+5+2)*360”,起點是“(20+50)/(50+20+10+5+2)*360”,依此類推,就得到了所有的物體。
這是一個很笨的方法,每次都直接手動告訴CD要算什么。但這只是開始。
我在這個例子中頻繁的使用計算公式,這個繪圖的過程是完全可以以Script的形式寫出來的,因為CD9的Script是純文本格式的。
一個餅圖的數(shù)據(jù)如下:
X1,X2,X3......Xn
比例數(shù)據(jù)計算公式為:
0/(X1+X2+X3+......+Xn)*360
X1/(X1+X2+X3+......+Xn)*360
(X1+X2)/(X1+X2+X3+......+Xn)*360
(X1+X2+X3)/(X1+X2+X3+......+Xn)*360
.......
(X1+X2+X3+......+Xn)/(X1+X2+X3+......+Xn)*360
對于圓來說0度的位置和360度的位置是相等的。所以在這個公式不會存在誤差問題。
在這里我對“函數(shù)”說明一下。
Script中的函數(shù)不僅僅是數(shù)學(xué)意義上的函數(shù)。數(shù)學(xué)函數(shù)只是當(dāng)中的一種。Script中的函數(shù)實際上是一組命令,包括邏輯判斷、循環(huán)指令、運(yùn)算公式......等等等等。一個完整、通用的Script是允許用戶更改參數(shù)數(shù)值的,然后Script可以根據(jù)用戶的數(shù)值做以判斷,并最終算出用戶想得到的結(jié)果。
在上面的例子中可以看到該腳本的關(guān)鍵處在于后半部分。這部分才是核心,實現(xiàn)條件判斷,并根據(jù)值的不同執(zhí)行不同命令。
該腳本中調(diào)用到的命令有:
.CreateRectangle .SetCornerRoundess .ApplyOutline
這三個命令就是CD內(nèi)核執(zhí)行繪圖和修改的命令函數(shù),分別功能為:建立方形、設(shè)置物體圓角值、應(yīng)用外框線(從字面上都能讀出來,命名相當(dāng)直觀)。由于在. CreateRectangle函數(shù)中的參數(shù)嵌有計算公式,而該公式中包含有能讓用戶設(shè)置數(shù)值的變量,因而就能繪制出用戶指定數(shù)據(jù)的方形。
這個腳本是一個相當(dāng)簡單的例子,可以做為學(xué)習(xí)CD script的入門教程。
有關(guān)CD內(nèi)核執(zhí)行繪圖和修改的命令函數(shù),可以參閱CD自帶的函數(shù)說明,該文件默認(rèn)是C:\Program Files\Corel\Graphics9\Programs\Draw_scr.hlp,根據(jù)你安裝路徑找到對應(yīng)目錄即可找到。
CD的Script功能強(qiáng)大之處不在錄制,在于編寫。
如果不能用得到CD就沒必要花這么大的工夫預(yù)留這個接口了,這會增加CD的開發(fā)難度——在編寫每一功能的時候都要考慮讓用戶可以通過Script來直接調(diào)用它。完全不考慮這點要簡單得多。
貼近實際應(yīng)用的例子都不會簡單。因為越方便的功能就需要越多的考慮,用Script寫出來就會結(jié)構(gòu)更復(fù)雜、調(diào)用的命令函數(shù)更多。這種例子不適宜當(dāng)為入門教程。即便舉出來也會讓入門者摸不著頭腦,甚至?xí)樛撕芏嗳恕K院芏嗑幊痰慕坛潭紡?#8220;Hello world”教起,出個對話框說“Hello world”有什么實際用途?在實際的應(yīng)用中我沒見過有誰這么做過。但它是入門教程,它教你怎么控制一個對話框。——這是個學(xué)習(xí)方法的問題。在 Script的使用中思維是很重要的,如果你不能做到分析、歸類和推測的應(yīng)用,就無法觸類旁通,那么你就想不出來通過Script來組合CD的命令和物體能做些什么。
通過Script來組合CD的命令和物體能做些什么?——這是門檻較低的Scrip使用方式。高級的Scrip使用方式是自己編寫自己的命令函數(shù),例如我前面提到的3d濾鏡,用戶只需要輸入數(shù)值就在后臺調(diào)用自己定義的命令函數(shù)來計算并生成3D物體,然后將物體數(shù)據(jù)折算成矢量圖形的節(jié)點數(shù)據(jù),這一數(shù)據(jù)CD能支持,因而CD就能將之繪制在屏幕上。然而這種方法門檻很高,對于大多數(shù)人來說可望不可及。所以我對這種使用方法稍帶而過,而把“通過 Script來組合CD的命令和物體能做些什么”做為重點。
組合CD命令能做什么?——用戶在使用CD 繪圖時都在使用CD的命令。你如果不能總結(jié)出來平時繪圖的過程(某些命令+某些命令=某種效果,例如AI的陰影濾鏡,其實就是拷貝多一個物體+更改顏色+ 調(diào)換圖層+稍微移位。而拷貝、更換顏色、換圖層順序、移位都是Script能調(diào)用的命令函數(shù)。依此類推。),那么誰都幫不了了。
共有 網(wǎng)友評論