欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

HTML5之SVG 2D入門(mén)4—筆畫(huà)與填充

  發(fā)布時(shí)間:2013-01-30 12:14:16   作者:佚名   我要評(píng)論
顏色處理,也就是填充和邊框效果;你會(huì)發(fā)現(xiàn)這里的內(nèi)容與canvas基本上是一致的。這些屬性既可以以屬性的形式寫(xiě)在元素中,也可以以CSS的形式保存,這是與canvas不一樣的地方

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

復(fù)制代碼
代碼如下:

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

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

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

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

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

線的端點(diǎn) - stroke-linecap屬性

這個(gè)屬性定義了線段端點(diǎn)的風(fēng)格,這個(gè)屬性可以使用butt,square,round三個(gè)值??蠢樱?br />

復(fù)制代碼
代碼如下:

<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條使用不同風(fēng)格線端點(diǎn)的線,

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

線的連接 - stroke-linejoin屬性
這個(gè)屬性定義了線段連接處的風(fēng)格,這個(gè)屬性可以使用miter,round,bevel三個(gè)值??蠢樱?br />

復(fù)制代碼
代碼如下:

<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中風(fēng)格的不同。

線的虛實(shí) - stroke-dasharray屬性

這個(gè)屬性可以設(shè)置線段采用何種虛實(shí)線??蠢樱?br />

復(fù)制代碼
代碼如下:

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

這個(gè)屬性是設(shè)置一些列數(shù)字,不過(guò)這些數(shù)字必須是逗號(hào)隔開(kāi)的。

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

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

所以左面的例子中繪制的線是畫(huà)5單位的實(shí)線,留5單位的空格,

再畫(huà)5單位的實(shí)線...這樣一直下去。

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

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

復(fù)制代碼
代碼如下:

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

是不是很熟悉,就是這么簡(jiǎn)單的。

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

相關(guān)文章

  • HTML5中Canvas與SVG的畫(huà)圖原理比較

    canvas 與 SVG都能夠使你在瀏覽器中畫(huà)圖,但它們的基本原理不同,接下來(lái)將對(duì)canvas 與 SVG的畫(huà)圖原理進(jìn)行介紹,感興趣的朋友可以了解下
    2013-01-16
  • HTML5之SVG 2D入門(mén)1—SVG(可縮放矢量圖形)概述

    可縮放矢量圖形(Scalable Vector Graphics,簡(jiǎn)稱SVG)是一種使用XML來(lái)描述二維圖形的語(yǔ)言(SVG嚴(yán)格遵從XML語(yǔ)法),SVG 功能集包括嵌套轉(zhuǎn)換、剪切路徑、alpha 蒙板和模板對(duì)象,感
    2013-01-30
  • HTML5之SVG 2D入門(mén)11—用戶交互性(動(dòng)畫(huà))介紹及應(yīng)用

    SVG擁有良好的用戶交互性:SVG能響應(yīng)大部分的DOM2事件,SVG能通過(guò)cursor良好的捕捉用戶鼠標(biāo)的移動(dòng)等等,感興趣的朋友可以了解下啊,或許本文對(duì)你學(xué)習(xí)動(dòng)畫(huà)有所幫助
    2013-01-30
  • HTML5之SVG 2D入門(mén)5—顏色的表示及定義方式

    SVG和canvas中是一樣的,都是使用標(biāo)準(zhǔn)的HTML/CSS中的顏色表示方法,這些顏色都可以用于fill和stroke屬性,接下來(lái)介紹下顏色的表示及定義方式感興趣的朋友可以了解下,或許對(duì)
    2013-01-30
  • HTML5之SVG 2D入門(mén)12—SVG DOM及DOM操作介紹

    由于SVG是html的元素,所以支持普通的DOM操作,又由于SVG本質(zhì)上是xml文檔,所以也有一種特殊的DOM操作,大多稱之為SVG DOM,本文將詳細(xì)介紹下SVG中的DOM操作,感興趣的朋友
    2013-01-30
  • HTML5之SVG 2D入門(mén)6—視窗坐標(biāo)系與用戶坐標(biāo)系及變換概述

    SVG存在兩套坐標(biāo)系統(tǒng):視窗坐標(biāo)系與用戶坐標(biāo)系。默認(rèn)情況下,用戶坐標(biāo)系與視窗坐標(biāo)系的點(diǎn)是一一對(duì)應(yīng)的,記下來(lái)介紹下坐標(biāo)與變換,感興趣的朋友可以了解下啊,或許對(duì)你有所幫
    2013-01-30
  • HTML5之SVG 2D入門(mén)13—svg對(duì)決canvas及長(zhǎng)處和適用場(chǎng)景分析

    到目前為止,SVG與Canvas的主要特性均已經(jīng)總結(jié)完畢了,現(xiàn)在,我們就來(lái)比對(duì)一下這兩種技術(shù),分析一下它們的長(zhǎng)處和適用場(chǎng)景,感興趣的朋友可以了解下哦,或許對(duì)你有所幫助
    2013-01-30
  • HTML5之SVG 2D入門(mén)3—文本與圖像及渲染文本介紹

    SVG的強(qiáng)大能力之一是它可以將文本控制到標(biāo)準(zhǔn)HTML頁(yè)面不可能有的程度,而無(wú)須求助圖像或其它插件,盡管SVG的文本渲染如此強(qiáng)大,但是還是有一個(gè)不足之處:SVG不能執(zhí)行自動(dòng)換行
    2013-01-30
  • HTML5之SVG 2D入門(mén)9—蒙板及mask元素介紹與應(yīng)用

    SVG支持多種蒙板特效,使用這些特性,我們可以做出很多很炫的效果,喜歡特效的朋友可不要錯(cuò)過(guò)哦。至于中文中把mask叫做"蒙板"還是"遮罩"就不去區(qū)分了,這里都叫做蒙板吧,希
    2013-01-30
  • HTML5之SVG 2D入門(mén)7—SVG元素的重用與引用

    前面介紹了很多的圖形元素,如果很多圖形本身是一樣的,需要每次都去定義一個(gè)新的么?我們可以重用一些圖形嗎?這就是本節(jié)講的重點(diǎn):SVG元素的重用,感興趣的朋友可以了解
    2013-01-30

最新評(píng)論