<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jasmine214--love

    只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
    posts - 731, comments - 60, trackbacks - 0, articles - 0

    Thinking in VML---第一部分 VML入門

    Posted on 2010-07-19 17:45 幻海藍夢 閱讀(1223) 評論(0)  編輯  收藏 所屬分類: JS

    原文:http://dlstone.blogchina.com/control/2107979.html

    第一部分 VML 入門

    ?

    第一節???? VML 基本概念

    VML 相當于 IE 里面的畫筆,能實現你所想要的圖形,而且結合腳本,可以讓圖形產生動態的效果。 VML 是微軟 1999 9 月附帶 IE5.0 發布的,在我認為, VML 其實是 Word HTML 結合的產物。可以將 Word 文檔另存為 HTML ,其中的文本和圖片可以很容易的轉換,但如果是手繪制的圖形在以往的 IE 里面就無法解釋了,如果都轉換成圖形文件又不太現實。于是微軟把 Word 里面的圖形控件結合到 IE 里面,使 IE 也具備了繪圖功能。

    VML 的全稱是 Vector Markup Language( 矢量可標記語言 ) ,矢量的圖形,意味著圖形可以任意放大縮小而不損失圖形的質量,這在制作地圖上有很大用途。為了顯示它的強大,和增加你學習 VML 的信心,先給你看看一個 VML 例子 :

    Demo1.html

    <html xmlns:v="urn:schemas-microsoft-com:vml">

    <STYLE>

    v\:* { Behavior: url(#default#VML) }

    </STYLE>

    <body>

    <v:roundrect strokecolor="black" fillcolor="white" style="position:relative;left:20;top:5;width:100px;height:40px;z-index:9">

    ?????? <v:shadow on="t" type="single" color="silver" offset="3pt,3pt"></v:shadow>

    ?????? <v:textbox id="memo" style="font-size:10pt;color:blue;line-height:18px" inset="1,1,1,1">Hello world!<br>Hello VML!</v:textbox>

    </v:roundrect>

    <v:oval strokecolor="black" fillcolor="white" style="position:relative;left:9;top:20;width:14px;height:10px;z-index:8">

    ????????????? <v:shadow on="t" type="single" color="silver" offset="3pt,3pt"></v:shadow>

    </v:oval>

    <v:oval strokecolor="black" fillcolor="white" style="position:relative;left:0;top:35;width:10px;height:8px;Z-index:7">

    ???????????????????? <v:shadow on="t" type="single" color="silver" offset="3pt,3pt"></v:shadow>

    </v:oval>

    <!--/v:group-->

    </body>

    第二節 Shape 對象和 vml 坐標系

    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) ,這樣的坐標就像數學里面的坐標了,把畫版分成了四個塊。

    在解決實際問題的時候,我發現, IE 會自動把可見的 VML 圖象放在相對的 (0,0) 位置,意思是說,上面兩張圖如果沒有增加兩個輔助的坐標,在 IE 上顯示出來是并列的兩個正方形。

    ??? 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 的對象中使用它。

    ??? 在下面幾節,將詳細介紹 Shape 延伸出來的一些具體對象,諸如 Rect RoundRect Oval Line 等對象。

    第三節 Line,PolyLine (線)對象

    ??? Line 是做圖中最常用的,它有兩個特殊的屬性 from to , 就是起始點和終止點坐標。

    <v:line from="0,0" to="100,50" style="position:relative;"/>

    ? ●如果要改變線的樣式, LineStyle (Stroke) 屬性可以做到 :

    ??? Single( 默認 ) ThinThin ThinThick ThickBetweenThin

    ? ●如果要改變線的類型,可以用 DashStyle(Stroke) 屬性 :

    ?

    ??? <v:line style="position:relative" from="0,0" to="100,0" >

    ??? <v:stroke dashstyle="Dot"/>

    ??? </v:line>

    Solid( 默認 )

    ShortDash:

    ShortDot:

    ShortDashDot:

    ShortDashDotDot:

    Dot:

    Dash:

    LongDash:

    DashDot:

    LongDashDot:

    LongDashDotDot:

    ●在畫坐標的時候,需要箭頭, VML 已經定義好了箭頭,在 Stroke 體現 :EndArrow StartArrow 屬性,一個是線開始的時候有箭頭,另一個是線結束的時候有箭頭。箭頭的樣式也有不少

    EndArrow="Block":

    EndArrow="Classic":( 這個看起來還比較舒服 )

    EndArrow="Diamond":

    StartArrow="Oval":

    StartArrow="Open":

    ?

    Demo2.html

    <html xmlns:v="urn:schemas-microsoft-com:vml">

    <STYLE>

    v\:* { Behavior: url(#default#VML) }

    </STYLE>

    <body>

    <v:line from="0,0" to="100,50" style="position:relative;" onmouseover="alert('hi')">

    <v:stroke dashstyle="LongDashDot" EndArrow="Classic"/>

    </v:line>

    </body>

    ?

    PolyLine Line 的變形,是不規則的連續曲線。它有一個特殊的屬性 Points ,用來設置每個點的坐標,例如:

    Demo3.html

    <html xmlns:v="urn:schemas-microsoft-com:vml">

    <STYLE>v\:* { Behavior: url(#default#VML) }</STYLE>

    <body>

    <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>

    </body>

    ?

    第四節 Rect,RoundRect (矩形)對象

    demo4.html

    ?

    <html xmlns:v="urn:schemas-microsoft-com:vml">

    <STYLE>v\:* { Behavior: url(#default#VML) }</STYLE>

    <body>

    <table>

    <tr><td>

    <v:Rect style="position:relative;width:100;height:50"/>

    </td></tr>

    <tr><td>

    ?

    ??? <v:RoundRect onmouseover="alert('RoundRect 顧名思義,是圓角的矩形,這種形狀在畫流程圖的時候很常用,如果加上陰影,就更好看了 ')" style="position:relative;width:100;height:50">

    ??? <v:shadow on="T" type="single" color="#b3b3b3" offset="5px,5px"/>

    ??? </v:RoundRect>

    </td></tr>

    <tr><td>

    <v:RoundRect style="position:relative;width:120;height:50px">

    ??&nbp; <v:shadow on="T" type="single" color="#b3b3b3" offset="5px,5px"/>

    ??? <v:TextBox inset="5pt,5pt,5pt,5pt" style="font-size:10.2pt;">Hello world!</v:TextBox>

    ??? </v:RoundRect>

    </td></tr>

    </table>

    </body>

    VML 里面, True False 可以簡寫成 T F Shadow 中的 offset 屬性用來設置 偏移原圖的 x,y 值。 on 屬性用來決定是否顯示陰影。在矩形中寫字,要用到 TextBox 對象。 TextBox 比較關鍵的屬性是 inset(left,top,right,bottom) ,意思是隔圖形邊的上下左右多少范圍內定位文字。

    第五節 oval( ) 對象

    VML 畫圓 (Oval) 是非常簡單的,只要設置圓的高和寬就可以了。當然定位也是常用的:

    ?

    ??? <v:oval style="position:relative;left:5;top:5;width:100;height:80"/>

    ?

    ??? 還要注意的是, top left 是圓的左上角坐標, width height 是圓的寬和高,不是圓的半徑。其圓心坐標是 (left-width/2,top-height/2)

    ??? 說到圓,不得不想到弧 (arc) VML 已經定義了弧對象,它有除了圓的基本性質外,兩個特殊的屬性 startangle endangle ,就是起始角度和結束角度,單位是度,而不是弧度:

    ?

    <v:arc filled=false style="position:relative;width:100;height:100" StartAngle="0" EndAngle="270" />

    ?

    第六節 Image 對象

    ?? Image 對象從外部調用一個圖形文件,只要 IE 能夠顯示的格式都可以。需要注意的是, VML 只用來顯示這張圖片,并沒有將這圖片矢量化,如果以后放大縮小,畫質會改變的。

    ?

    <v:image src="big.GIF" style="position:relative;top:0;left:0;width:165;height:157" />

    ?

    第七節 Group 容器

    ??? Group 的使用很簡單,但功能很強大。它能讓一系列的 VML 對象使用共同的坐標系,它很常用的,基本上如果使用了超過一個 VML 對象的頁面都使用 Group 。使用 Group 還有個好處,就是可以動態改變 CoordSize 值放大或縮小整個 Group 里面的 VML

    ?

    <v:group ID="group1" style="position:relative;WIDTH:200px;HEIGHT:200px;" coordsize = "2000,2000">

    <v:rect style="WIDTH:2000px;HEIGHT:2000px" fillcolor="#99cccc">

    ??? <v:shadow on="t" type="single" color="silver" offset="5pt,5pt">

    </v:rect>

    <v:oval style="position:relative;top:100;left:100;width:1000;height:1000;z-index:7;" fillcolor="red" strokeColor="red"/>

    <v:rect style="position:relative;top:500;left:300;width:1000;height:1000;z-index:8;" fillcolor="blue" strokeColor="blue"/>

    <v:line from="200,200" to="1000,1700" style="z-index:9" fillcolor="yellow" strokeColor="yellow" strokeWeight=2pt/>

    </v:group>

    ?

    第八節 ShapeType VML 制作模板

    ?? VML 的這個功能很有用,模版,顧名思義,它可以減少書寫代碼的量,又使的代碼可讀性提高。在理解 VML 模版的時候,可以和 HTML CSS 一樣理解,它是定義好的一種形狀,下次使用的時候直接聲明 type 屬性就可以了。看看下面的例子:

    ?

    <v:shapetype id="arrowUP" coordsize="6 6"> <!-- 三角形 向上 -->

    ??? <v:path v="m 3,0 l 0,6,6,6,3,0 x e" />

    </v:shapetype>

    <v:shapetype id="arrowDown" coordsize="6 6"> <!-- 三角形 向下 -->

    ??? <v:path v="m 0,0 l 3,6,6,0,0,0 x e" />

    </v:shapetype>

    ?

    ??? 定義好上面的模版后,以后就可以直接調用了:

    ?

    ??? <v:shape type="#arrowUP" style="position:relative;width:50;height:50"/>

    ?

    ??? <v:shape type="#arrowDown" style="position:relative;width:50;height:50"/>

    ?

    ??? <v:shape fillcolor=blue type="#arrowDown" style="position:relative;width:80;height:80" />

    ?

    ??? 不知道大家有沒有注意到, VML 里面對“ , ”使用不強制的,你可以使用 coordsize="6,6" 也可以使用 coordsize="6 6" ,效果是一樣的。

    主站蜘蛛池模板: 黄色片在线免费观看 | 亚洲国产精品嫩草影院在线观看 | 色一情一乱一伦一视频免费看| 国产va免费精品观看精品 | 一级成人毛片免费观看| 精品国产呦系列在线观看免费 | 亚洲美女中文字幕| 亚洲AV无码无限在线观看不卡| 国产成人人综合亚洲欧美丁香花 | 桃子视频在线观看高清免费视频| 成人无码区免费视频观看| 亚洲午夜久久久久久久久电影网| 国产黄在线观看免费观看不卡| 亚洲一区爱区精品无码| 四虎成人精品永久免费AV| 亚洲制服丝袜一区二区三区| 久久精品免费大片国产大片| 九月丁香婷婷亚洲综合色| 88xx成人永久免费观看| 亚洲AV无码乱码麻豆精品国产| 永久黄网站色视频免费直播| 黄色三级三级三级免费看| 亚洲乱色熟女一区二区三区丝袜| 99久久精品国产免费| 亚洲欧洲无码一区二区三区| 亚洲国产精品尤物yw在线| 久久久精品午夜免费不卡| 四虎永久免费地址在线网站| 亚洲色偷偷偷网站色偷一区| 免费无码AV电影在线观看| 永久免费观看黄网站| 四虎永久免费观看| 日本不卡免费新一区二区三区| 久久精品国产亚洲7777| 国产精品亚洲lv粉色| 亚洲AV无码日韩AV无码导航| 亚洲日韩在线观看免费视频| 久久久久久久亚洲Av无码| 四虎影在线永久免费观看| 四虎影视成人永久免费观看视频| 亚洲成av人片天堂网无码】|