VML簡介
1 VML概述
在VML裏面,標記使用的是XML擴張,需要一個namespace(命名空間),你可以使用慣用的“v”作爲命名空間,使用IE5.0到IE6.0通用的定義如下:
<html xmlns:v="urn:schemas-microsoft-com:vml">
<STYLE>
v/:* { Behavior: url(#default#VML) }
</STYLE>
xmlns 全稱就是XML NameSpace 也就是命名空間。Behavior(行爲)也是IE5.0新推出的東西,它的功能非常強大,結合樣式表,可以給任何HTML對象增加行爲(新的屬性、方法、事件),而在這裏,它的用處是把命名空間“v”和系統預定義的行爲VML連接。這樣定義以後,你就可以使用下面的標記了,和普通的HTML標記有所區別,每個標記都增加了一個命名空間:
<v:shape></v:shape>
和其他HTML元素一樣,VML標記裏面可以定義DHTML大部分屬性和事件,比如說id,name,title,onmouseover等等。在寫法上VML比較靈活,很多屬性既可以寫在標記裏面,又可以獨立出一個新的標記來表示:
<v:shape id=shape1 name=shape1 onmouseover="alert(this.id)" StrokeColor=red Path="m 0,0 l 10,10 x e">
</v:shape>
等同於下面的寫法:
<v:shape id=shape1 name=shape1 onmouseover="alert(this.id)">
<v:Stroke StrokeColor=red/>
<v:Path v="m 0,0 l 10,10 x e"/>
</v:shape>
當然不是所有的屬性都可以寫成獨立的標記,常用的比如說上面的 Stroke(按我的理解可以翻譯成線性),Path,Shadow,Fill(填充)等,VML這樣的方式可以理解爲 shape 的屬性分類,使屬性更直觀。
Shape 對象派生出來的一些對象,更加直接的圖象,比如說 Rect(矩形),RoundRect(圓邊的矩形),Oval(圓),Line(線),PolyLine(不規則折線),Image(圖形文件)等等,以後將對這些對象細細描述。
2語法
VML標記是從XML衍生出來,因而採用的都是符合XML規範的標籤。在標籤中,屬性和元素不區分大小寫。True和False可以簡寫爲t和f。
2.1 shape圖形
Shape是VML最基本的對象,利用它可以畫出所有想要的圖形。在VML中,使用的座標並不是Document的座標,它有自己的座標系,這樣一來,動態改變它的座標,就可以實現放大、縮小、旋轉等功能了。shape的 CoordSize 屬性就是用來定義座標的,它有兩個參數,<v:shape CoordSize="2800,2800" />,這裏的2800,2800是橫縱座標被分成了2800個點,並不是HTML裏面默認像素。如果沒有設置圓點,VML默認是0,0(左上角),當然你也可以使用CoordOrig屬性設置VML的圓點座標。
<v:shape CoordOrig="-1400,-1400" CoordSize="2800,2800" style="width:500;height:500" />
注意:定義的座標只是相對的,真正顯示的圖形大小還需要 style="width:500;height:500" 來定義!
上面的定義後,你可用的座標是 x(-1400到1400) y(-1400到1400) ,這樣的座標就像數學裏面的座標了,把畫版分成了四個塊。
shape中最主要的屬性是Path,它是個功能強大的畫筆,語法很簡單,由幾個字母組成,下面詳細講述:
m x,y:MoveTo把畫筆移動到 (x,y);
l x,y:LineTo從當前點到(x,y)畫一條線;可以給連續的幾個點,VML會連續畫出來直到遇到 x 命令。
x:Close結束一條線;
e:End結束畫圖。
shape的其他常用屬性:
FillColor:填充顏色,使用HTML中規定的顏色;例如:fillcolor=red
Filled:是否要填充圖形,如果圖形不是封閉的,也會自動封閉圖形進行填充。當Filled="true"(默認),fillcolor纔有效果;
StrokeColor:線的顏色;
StrokeWeight:線的寬度;
Title:當鼠標移動到該圖形上的時候,顯示的文字,和HTML裏面的alt、tilte一樣;
Type:指定該圖形屬於那個ShapeType,ShapeType可以爲VML制定模版,將在以後加以描述;
前面的這些屬性,FillColor、Filled可以在<v:Fill />中使用,StrokeColor、StrokeWeight可以在<v:Stroke />中使用。也可以在 Shape 或者繼承Shape的對象中使用它。
2.2 ShapeType
定義shape的模版,在應用中可以重複使用。
<v:shapetype id="arrowDown" coordsize="6 6">
<v:path v="m 0,0 l 3,6,6,0,0,0 x e" />
</v:shapetype>
定義ShapeType時需要指定id,在後面使用ShapeType需要指定對應shape的type爲#arrowDown就可以使用ShapeType模版。
注意:
Adj屬性的用法,需要與v:formulas結合起來使用。Adj中的參數順序爲#1,#2,…#n,formulas中的順序爲@1,@2,…@n。
2.3 Line線段
用法:
<v:line style="position:relative" from="0,0" to="100,0" >
<v:stroke dashstyle="Dot"/> <!—線風格-->
</v:line>
線顏色、風格定義可以通過v:stroke來設定。
2.4 PolyLine不規則折線
用法:
<v:PolyLine filled="false" Points="0,0 0,100 20,150 200,100" style="position:relative"/>
<v:stroke StartArrow="Oval" EndArrow="Classic" dashstyle="Dot" />
</v:PolyLine>
IE5.0不支持箭頭,如果設置填充爲true那麼對應的多邊形必須是閉合才能顯示填充顏色。
2.5 Rect矩形
用法:
<v:Rect style="position:relative;width:100;height:50px"/>
2.6 RoundRect圓角矩形
用法:
<v:RoundRect style="position:relative;width:100;height:50px">
<v:shadow on="T" type="single" color="#b3b3b3" offset="5px,5px"/>
</v:RoundRect>
Arcsize 圓角的大小默認爲0.2。
2.7 Oval橢圓
用法:
<v:oval style="position:relative;left:5;top:5;width:100;height:80"/>
需要注意的是,top和left是圓的左上角座標,width 和 height 是圓的寬和高,不是圓的半徑。其圓心座標是(left-width/2,top-height/2)。
2.8 Arc弧
用法:
<v:arc filled=false style="position:relative;width:100;height:100" StartAngle="0" EndAngle="270" />
注意:
0角度是從平常的90度開始的。
2.9 Fill填充
相關屬性及說明:
屬性名稱
說明
id
唯一編號
type
填充類型,可以是“solid | gradient | gradientradial | tile | pattern | frame”,“Tile”, “pattern”和“frame”要求必須設置Image屬性。“Gradient”,“gradientradial”和“gradienttitle”要求gradient屬性必須設置。
On
是否加載填充
color
填充顏色
Color2
漸變中的第二顏色
opacity
透明度
Image屬性
Src
圖片對應的url地址
Size
圖片大小。默認爲自動
Origin
與左上角相對位置作爲圖片的左上角。默認爲圖片中心點。
position
外接矩形放置圖片的位置。默認爲“auto”
alignshape
與圖形對齊
漸變相關屬性(gradient)
colors
不同顏色在漸變中所佔比例如(30% red, 70% blue)
Angle
漸變起始角度
Focus
線形漸變的焦點
focussize
focusposition
method
“none”,“linear”,“sigma”或者"any"
2.10 Stroke
相關屬性及說明:
Id
唯一標識
On
是否加載樣式默認爲true
Weight
線寬度
color
顏色
Color2
用於漸變顏色中的第二顏色
Opacity
透明度
style
樣式"single", "thinthin" (1:1:1), "thinthick", (1:1:2) "thickthin" (2:1:1), "thickbetweenthin" (1:1:2:1:1)
miterlimit
連接點處內點和外點的最大距離
joinstyle
"round" – rounded join, "bevel" – beveled join, "miter" – miter join,默認爲“round”
Endcap
“flat”,“square”,“round”,默認爲“round”
dashstyle
線樣式(“solid| dot| dash| dashdot| longdash| longdashdot| longdashdotdot”),默認爲“solid”
filltype
填充類型("solid", "tile", "pattern", "frame"),默認爲“solid”
Src
imagesize
imagealignshape
startarrow
起始箭頭風格
startarrowwidth
startarrowlength
endarrow
結束箭頭風格
endarrowwidth
endarrowlength
2.11 Path
在path中既包含了點座標的信息也包含對應的命令信息常用的有以下命令:
m 移動到指定位置。
l 從前面一點畫一條線到指定的座標位置。
c 從當前點畫弧線到指定座標位置。
x 線段閉合,即從當前點與起始點建立線段連接形成閉合圖形。
e 畫線結束。
如path=“m 3,0 l 0,6 6,6 3,0 x e”表示的是從(3,0)點出發先畫一條線到(0,6),然後再畫一條線段到(3,0),x表示閉合即從(3,0)到起點再畫一條線段,最後e表示畫線結束。