字體:小 中 大 | |
|
|
2013/07/12 07:30:31瀏覽265|回應0|推薦0 | |
圖形可以使用image命令來輸入: picture p; %p=image也可以 p:=image( draw command 1; draw command 2; ... draw command n; ); 這樣子,p的內容就是這些繪圖指令的總結果。 另外,也可以使用currentpicture變數,來給圖形變數賦值。currentpicture是MetaPost的系統變數,它自動會把一個圖的所有繪圖結果儲在裡面,而nullpicture則是空白畫面。所以: picture p; draw command 1; draw command 2; ... draw command n; p:=currentpicture; currentpicture:=nullpicture; 把currentpicture:=nullpicture;命令執行後,所繪的圖形就會回到空白。進而可以畫出其他的圖形。 Picture的運算也很有越,值得玩一下。如下表: 其中的glyph運算元,可以輸出某個字型的字元的圖形,高度會是1000 bp。如果是256個以內的西方字母,可以用 glyph "X" of "cmr10"來輸出X的"cmr10"字體。如果是中文的unicde,只能用glyph number of "中文字體的方式。接下來的例子,「車」這個字是在新宋體(asong)的subfont asong8e內第202個字元,如果這個字體有裝好,那麼「glyph 202 of "asong8e"」就可以把字取出來。然後用pathpart來分析其字的path,再用point of 畫出path的點。for 【變數】 within 【圖形】用來分析圖形的結構。 上圖故意用drawarrow來畫「車」的path,可以看出path 的起點和終點在哪裡。而印出原點的位置是用來比較其path的座標關係。如果要把做成象棋棋子圖形,這個path還需要修正位置,把字的中心點移到原點上面。這個在未來的文件中再進一步說明。 最後,可以用這個把asong8e內的字全部取出來,看看可以認識幾個字: beginfig(1); picture p; for i=0 upto 255: p:=glyph i of "asong8e" scaled 0.025 shifted (28*(i mod 16), -28*floor(i/16)); for j within p: draw pathpart j; endfor endfor endfig; end; |
|
( 興趣嗜好|電腦3C ) |