濮阳杆衣贸易有限公司

主頁 > 知識庫 > HTML5之SVG 2D入門4—筆畫與填充

HTML5之SVG 2D入門4—筆畫與填充

熱門標簽:平頂山電子地圖標注怎么修改 洛陽市伊川縣地圖標注中心官網(wǎng) 標準智能外呼系統(tǒng) 地圖標注自己去過的地方 高德地圖標注錯誤怎么修改 會聲會影怎樣做地圖標注效果 江蘇高頻外呼系統(tǒng)線路 搜狗星級酒店地圖標注 電銷機器人視頻

前面我們重點都在總結(jié)各類形狀,文本和圖片,接下來,我們還是和討論canvas一樣,總結(jié)一下顏色處理,也就是填充和邊框效果;你會發(fā)現(xiàn)這里的內(nèi)容與canvas基本上是一致的。這些屬性既可以以屬性的形式寫在元素中,也可以以CSS的形式保存(這是與canvas不一樣的地方)。
填充色 - fill屬性
這個屬性使用設(shè)置的顏色填充圖形內(nèi)部,使用很簡單,直接把顏色值賦給這個屬性就可以了??蠢樱?br />

復制代碼
代碼如下:

<rect x="10" y="10" width="100" height="100" stroke="blue" fill="red"
fill-opacity="0.5" stroke-opacity="0.8"/>

上面例子中畫了一個紅色藍邊的矩形。注意幾點:
1. 如果不提供fill屬性,則默認會使用黑色填充,如果要取消填充,需要設(shè)置成none。
2. 可以設(shè)置填充的透明度,就是fill-opacity,值的范圍是0到1。
3. 稍微復雜一點的是fill-rule屬性。這個屬性定義了判斷點是不是屬于填充范圍的算法;除了inherit這個值外,還有兩個取值:

nonzero:這個值采用的算法是:從需要判定的點向任意方向發(fā)射線,然后計算圖形與線段交點的處的走向;計算結(jié)果從0開始,每有一個交點處的線段是從左到右的,就加1;每有一個交點處的線段是從右到左的,就減1;這樣計算完所有交點后,如果這個計算的結(jié)果不等于0,則該點在圖形內(nèi),需要填充;如果該值等于0,則在圖形外,不需要填充。看下面的示例:

evenodd:這個值采用的算法是:從需要判定的點向任意方向發(fā)射線,然后計算圖形與線段交點的個數(shù),個數(shù)為奇數(shù)則改點在圖形內(nèi),需要填充;個數(shù)為偶數(shù)則點在圖形外,不需要填充??聪聢D的示例:

邊框色 - stroke屬性
上面的例子中已經(jīng)用到了stroke屬性,這個屬性使用設(shè)置的值畫圖形的邊框,使用起來也很直接,把顏色值賦給它就可以了。注意:
1. 如果不提供stroke屬性,則默認不繪制圖形邊框。
2. 可以設(shè)置邊的透明度,就是stroke-opacity,值的范圍是0到1。
實際上,邊的情況比圖形內(nèi)部稍微復雜一點,因為邊除了顏色,還有"形狀"需要定義。

線的端點 - stroke-linecap屬性

這個屬性定義了線段端點的風格,這個屬性可以使用butt,square,round三個值。看例子:

復制代碼
代碼如下:

<svg width="160" height="140">
<line x1="40" x2="120" y1="20" y2="20" stroke="black" stroke-width="20" stroke-linecap="butt"/>
<line x1="40" x2="120" y1="60" y2="60" stroke="black" stroke-width="20" stroke-linecap="square"/>
<line x1="40" x2="120" y1="100" y2="100" stroke="black" stroke-width="20" stroke-linecap="round"/>
</svg>


這段代碼繪制了3條使用不同風格線端點的線,

從左面的圖中我們可以很容易看出3中風格的不同。

線的連接 - stroke-linejoin屬性
這個屬性定義了線段連接處的風格,這個屬性可以使用miter,round,bevel三個值。看例子:

復制代碼
代碼如下:

<svg width="160" height="280">
<polyline points="40 60 80 20 120 60" stroke="black" stroke-width="20"
stroke-linecap="butt" fill="transparent" stroke-linejoin="miter"/>

<polyline points="40 140 80 100 120 140" stroke="black" stroke-width="20"
stroke-linecap="round" fill="transparent" stroke-linejoin="round"/>

<polyline points="40 220 80 180 120 220" stroke="black" stroke-width="20"
stroke-linecap="square" fill="transparent" stroke-linejoin="bevel"/>
</svg>


從左面的圖中我們很容易看到3中風格的不同。

線的虛實 - stroke-dasharray屬性

這個屬性可以設(shè)置線段采用何種虛實線。看例子:

復制代碼
代碼如下:

<svg width="200" height="150">
<path d="M 10 75 Q 50 10 100 75 T 190 75" stroke="black"
stroke-linecap="round" stroke-dasharray="5,10,5" fill="none"/>
<path d="M 10 75 L 190 75" stroke="red"
stroke-linecap="round" stroke-width="1" stroke-dasharray="5,5" fill="none"/>
</svg>

這個屬性是設(shè)置一些列數(shù)字,不過這些數(shù)字必須是逗號隔開的。

屬性中當然可以包含空格,但是空格不作為分隔符。每個數(shù)字

定義了實線段的長度,分別是按照繪制、不繪制這個順序循環(huán)下去。

所以左面的例子中繪制的線是畫5單位的實線,留5單位的空格,

再畫5單位的實線...這樣一直下去。

除了這些常用的屬性,還有下列屬性可以設(shè)置:
stroke-miterlimit:這個和canvas中的一樣,它處理什么時候畫和不畫線連接處的miter效果。
stroke-dashoffset:這個屬性設(shè)置開始畫虛線的位置。

使用CSS展示數(shù)據(jù)
HTML5強化了DIV+CSS的思想,所以展示數(shù)據(jù)的部分還可以交給CSS處理。與普通HTML元素相比,只不過是 background-color和border換成了fill和stroke。其他的大多都差不多。簡單看個例子:

復制代碼
代碼如下:

#MyRect:hover {
stroke: black;
fill: blue;
}

是不是很熟悉,就是這么簡單的。

實用參考:
腳本索引:http://msdn.microsoft.com/zh-cn/library/ff971910(v=vs.85).aspx
開發(fā)中心:https://developer.mozilla.org/en/SVG
熱門參考:http://www.chinasvg.com/
官方文檔:http://www.w3.org/TR/SVG11/

標簽:廣西 鄂爾多斯 松原 阿克蘇 蚌埠 廣東 果洛 常德

巨人網(wǎng)絡(luò)通訊聲明:本文標題《HTML5之SVG 2D入門4—筆畫與填充》,本文關(guān)鍵詞  HTML5,之,SVG,入門,筆畫,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5之SVG 2D入門4—筆畫與填充》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5之SVG 2D入門4—筆畫與填充的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    博湖县| 子洲县| 客服| 凤翔县| 元江| 大埔区| 冷水江市| 双桥区| 沅陵县| 东阿县| 土默特左旗| 永丰县| 乌什县| 咸丰县| 新巴尔虎右旗| 祁连县| 任丘市| 德昌县| 上栗县| 若尔盖县| 南宫市| 霍山县| 鹰潭市| 滨海县| 乌拉特前旗| 开平市| 武城县| 仪征市| 舒兰市| 松原市| 保山市| 武汉市| 潍坊市| 体育| 莱芜市| 开阳县| 伊春市| 贡嘎县| 康平县| 陈巴尔虎旗| 栖霞市|