DIA如何自定形狀 (收藏)

[ 2007-11-28 20:53:18 | 作者: Admin ]
: | |
基礎
dia的自定形狀至少包含了二個檔案
shape- 定義形狀要使用XML 的SVG格式,
sheet - 集合上述不同的形狀,一樣是使用XMLl格式

目錄在C:\Documents and Settings\使用者名稱\.dia的shape,sheet
你可以使用文字編輯器(支援UTF8)
檢視不同的檔案,參考,你只要注意 不含語言及 xml:lang="zh_tw"部份其於忽略不看

--------------------------------------------------------------------------------
1.快速建立一個自定形狀
開啟 dia,設計一個寫的DIA ,然後匯出為shape檔,這將會產生兩個檔案, 一個 .shape和 .png 檔(當成圖示).
我隨便建立一個形狀,並匯出為c1.shape,匯出時會問大小,這是指圖示的大小(在工具列顯示),不影響真正形狀的大小
請匯出到C:\Documents and Settings\使用者名稱\.dia\shape

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg">
<name>shape - c1</name>
<icon>c1.png</icon>
<connections/>
<aspectratio type="fixed"/>
<svg:svg>
<svg:path style="fill: #ffffff" d="M 8.35 5.4 C 9.35,5.4 13.65,6.7 8.25,6.6 C 2.85,6.5 7.35,5.4 8.35,5.4z"/>
<svg:path style="fill: none; fill-opacity:0; stroke-width: 0.1; stroke: #000000" d="M 8.35 5.4 C 9.35,5.4 13.65,6.7 8.25,6.6 C 2.85,6.5 7.35,5.4 8.35,5.4"/>
</svg:svg>
</shape>將<name>中的shape改為custom(註:name 是一個重要的key將shape檔關連到sheet檔,因此名稱要完全相同)
建立sheet檔案 本範例中稱 custom.sheet. 其內容是: <?xml version="1.0" encoding="utf-8"?>
<sheet xmlns="http://www.lysator.liu.se/~alla/dia/dia-sheet-ns">
<name>custom</name>
<description>custom shape</description>
<contents>
<object name="custom - c1">
<description>測試1</description>
</object>
</contents>
</sheet>
當有多個 shape時, 只要在 object中多加入一個就可以了,設好之後, 然後重新啟動 Dia,新的物件將會顯示在 sheets列表.

#如果沒有顯示,可能是你的XML的語法有問題

--------------------------------------------------------------------------------
2.說明
參考自dia網站上的文件說明

自定形狀模組===================使用XML檔案來描述形狀.正確的形狀是使用SVG的格式. line, polyline, polygon, rect, circle, ellipse,path 和 g 支援元件e. 注意路徑元件只支援包含M,m,L,l,H,h,V,v,C,c,S,s,Z 和 z 命令.不支援變型和 CSS 單位,並且只有支援有限的CSS集合一個文字text box可以關連到形狀. 自定的形狀碼將確定文字輸入會合乎其形狀的大小. 文字text box的單位和形狀相同.#文字盒的位置,請參考其形狀描述的位置,否則其位置會很奇怪形狀======一個典型的形狀看起來如下: <?xml version="1.0"?> <shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg"> <name>Circuit - NPN Transistor</name> <icon>npn.xpm</icon> <connections> <point x="0" y="0"/> <point x="6" y="-4"/> <point x="6" y="4"/> </connections> <aspectratio type="fixed"/> <svg:svg width="3.0" height="3.0"> <svg:line x1="0" y1="0" x2="3" y2="0" /> <svg:line x1="3" y1="-3" x2="3" y2="3" /> <svg:line x1="3" y1="-2" x2="6" y2="-4" /> <svg:line x1="3" y1="2" x2="6" y2="4" /> <svg:polyline points="5,4 6,4 5.6154,3.0769" /> </svg:svg> </shape>name和svg標籤是必須的name是ID在載入和儲存時使用.圖示icon指定一個 xpm或其它圖檔來使用在工具列的圖示. 檔名是關連到形狀檔. 如果你沒有給則會使用預設的檔案.connections 指定形狀的連接點. 座標系同svg形狀說明.aspectratio 可以讓你指定變形. 有三種可能性是: <aspectratio type="free"/> 任何比列是OK的(預設) <aspectratio type="fixed"/> 固定比列. <aspectratio type="range" min="n" max="m"/> 指定某一範圍最後的選項可以讓你指定某一數量的扭曲, 在某些狀況下很有用.文字框(textbox) (不顯示)可以讓你將文字關連到形狀. 語法是: <textbox x1="left" y1="top" x2="right" y2="bottom"/>這裏參數是指定邊界,座標系同SVG 形狀說明.注意:最後是/>svg 標籤說明形狀.寬度和高度的參數是被忽略,並且只遵守的 SVG 規格. 更多的資訊在SVG, 請看 W3C 頁面相關說明: http://www.w3.org/Graphics/SVG/下一節有關於SVG的規格可以使用在形狀檔的明細.形狀說明=====================Scalable Vector Graphics(SVG) 格式用在這個形狀.每一個 SVG 標籤的屬性. 屬性應該如下的格式: <svg:whatever style="name1: value1; name2: value2; ... name42: value42"/>目前只有下面樣式屬性是可以使用: stroke-width - 線的寬度,相對使用者指定的寬度. stroke-linecap - 線端點. 其中一個 butt, round, square, projecting (a synonym for square), 或預設. stroke-linejoin - 線連接格式. 其中一個 miter, round, bevel 或預設. stroke-pattern - dash 樣本. 其中一個none, dashed, dash-dot, dash-dot-dot, dotted 或預設. stroke-dashlength - 破折號的長度在dash 樣本的, 在相對於使用者選擇的值(預設是synonym for 1.0). stroke - 筆觸的顏色. 你可以前景顏色 fg, 預設值, 背景, bg 相反, 文字或沒有, 或使用16進位的顏色值格式 #rrggbb. fill - 填入顏色. 相同的值如描邊, 除了default 的意義外inverse 是交換. 預設不會填入顏色, 如果要填入顏色請使用"fill: default"所以要繪製一個使用hairline的筆觸的方形, 下面使用技巧: <svg:rect style="stroke-width: 0" x="..." y="..." width="..." height="..."/>被認出的繪製元件是:<svg:g> 群組元件. 你可以放置其它的元件在其中. 在群組元件的樣式將會繁殖到包含的元件(除非它被蓋寫).<svg:line x1="..." y1="..." x2="..." y2="..."/> 元件是線.<svg:polyline points="...."/> 這是一個折線. That is, a number of connected line segments. The points attribute holds the coordinates of the end points for the line segments. 座標分開是使用空白鍵或逗號. 建議的格式是 "x1,y1 x2,y2 x3,y3 ...".<svg:polygon points="...."/> 多邊形.點的參數如同折線.<svg:rect x1="..." y1="..." x2="..." y2="..."/> 這是一個方形. 左上角是(x1,y1),右下角 (x2,y2).<svg:circle cx="..." cy="..." r="..."/> 圓形的圓心是 (cx,cy) 半徑是 r.<svg:ellipse cx="..." cy="..." rx="..." ry="..."/> 橢圓,圓心(cx, cy) 它的半徑rx 在 x 方向 且 ry 在 y 方向.<svg:path d="...."/> 這是最複雜的繪製的元件. 它說明了一個路徑扮演line segments和bezier curves. 它目前 支援elliptic arc 或quadratic bezier curves. d 字串扮演數字命令由"x arg1 arg2 ..." 這裏 x 是字元代碼是命令,而參數是使用空白或是逗號分開.每一個命令有一個絕對或相對的差異. . 支援的命令是: M x,y 移動游標 L x,y 繪製線到(x,y) H x 繪製水平線到 x V y 繪製垂直線到 y C x1,y1 x2,y2, x3,y3 繪製bezier 曲線由 (x3,y3)到 (x1,y1) 和 (x2,y2) 為控制點. S x1,y1 x2,y2 同上, 但是繪製`平滑' bezier.也就是, 推斷第一第一個控制點由前面的bezier. Z 關閉路徑. 如果路徑關閉使用 z 或 Z, 然後它可被填滿.
评论Feed 评论Feed: http://www.vTalkback.com/blog/feed.asp?q=comment&id=155

这篇日志没有评论.

发表
表情图标
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:  
验证码 * 请输入验证码