成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

HTML5SVG中的圖形繪制介紹及使用是怎樣的-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)HTML5 SVG中的圖形繪制介紹及使用是怎樣的,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),薩嘎企業(yè)網(wǎng)站建設(shè),薩嘎品牌網(wǎng)站建設(shè),網(wǎng)站定制,薩嘎網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,薩嘎網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

基本形狀
SVG提供了很多的基本形狀,這些元素可以直接使用,這一點(diǎn)比canvas好多了。廢話不說了,直接看例子,這個(gè)最直接:



代碼如下:


<svg width="200" height="250">
 <rect x="10" y="10" width="30" height="30" stroke="black" fill="transparent" stroke-width="5"/>
 <rect x="60" y="10" rx="10" ry="10" width="30" height="30" stroke="black" fill="transparent" stroke-width="5"/>
 <circle cx="25" cy="75" r="20" stroke="red" fill="transparent" stroke-width="5"/>
 <ellipse cx="75" cy="75" rx="20" ry="5" stroke="red" fill="transparent" stroke-width="5"/>
 <line x1="10" x2="50" y1="110" y2="150" stroke="orange" fill="transparent" stroke-width="5"/>
 <polyline points="60 110 65 120 70 115 75 130 80 125 85 140 90 135 95 150 100 145"
     stroke="orange" fill="transparent" stroke-width="5"/>
 <polygon points="50 160 55 180 70 180 60 190 65 205 50 195 35 205 40 190 30 180 45 180"
     stroke="green" fill="transparent" stroke-width="5"/>
 <path d="M20,230 Q40,205 50,230 T90,230" fill="none" stroke="blue" stroke-width="5"/>
</svg>



這段HTML顯示的結(jié)果如下:

HTML5 SVG中的圖形繪制介紹及使用是怎樣的

這個(gè)例子畫了很多形狀:正常的矩形,帶圓角的矩形,圓形,橢圓形,直線,折線,多邊形,還有路徑。這些都屬于基本的圖形元素。雖然繪制一個(gè)圖形有很多種方式,比如矩形可以用rect實(shí)現(xiàn),也可以用path等實(shí)現(xiàn),但是我們還是應(yīng)該盡量保持SVG的內(nèi)容短小精悍,易于閱讀

下面是每個(gè)形狀的使用說明(這里只介紹控制圖形形狀和位置的基本屬性,填充等屬性放到后面總結(jié))。

矩形 - rect元素
這個(gè)元素有6個(gè)控制位置和形狀的屬性,分別是:
x:矩形左上角的坐標(biāo)(用戶坐標(biāo)系)的x值。
y:矩形左上角的坐標(biāo)(用戶坐標(biāo)系)的y值。
width:矩形寬度。
height:矩形高度。
rx:實(shí)現(xiàn)圓角效果時(shí),圓角沿x軸的半徑。
ry:實(shí)現(xiàn)圓角效果時(shí),圓角沿y軸的半徑。
比如上面例子中,實(shí)現(xiàn)了圓角效果,你也可以通過設(shè)置rx,ry為不同的值實(shí)現(xiàn)橢圓角效果。

圓 - circle元素
這個(gè)元素的屬性很簡單,主要是定義圓心和半徑:
r:圓的半徑。
cx:圓心坐標(biāo)x值。
cy:圓心坐標(biāo)y值。

橢圓 - ellipse元素
這個(gè)是更加通用的圓形元素,你可以分別控制半長軸和半短軸的長度,來實(shí)現(xiàn)不同的橢圓,很容易想到,當(dāng)兩個(gè)半軸相等時(shí),就是正圓形了。
rx:半長軸(x半徑)。
ry:半短軸(y半徑)。
cx:圓心坐標(biāo)x值。
cy:圓心坐標(biāo)y值。

直線 - line元素
直線需要定義起點(diǎn)與終點(diǎn)即可:

x1:起點(diǎn)x坐標(biāo)。
y1:起點(diǎn)y坐標(biāo)。
x2:終點(diǎn)x坐標(biāo)。
y2:終點(diǎn)y坐標(biāo)。

折線 - polyline元素
折線主要是要定義每條線段的端點(diǎn)即可,所以只需要一個(gè)點(diǎn)的集合作為參數(shù):

points:一系列的用空格,逗號,換行符等分隔開的點(diǎn)。每個(gè)點(diǎn)必須有2個(gè)數(shù)字:x值和y值。所以下面3個(gè)點(diǎn) (0,0), (1,1)和(2,2)可以寫成:"0 0, 1 1, 2 2"。

多邊形 - polygon元素
這個(gè)元素就是比polyline元素多做一步,把最后一個(gè)點(diǎn)和第一個(gè)點(diǎn)連起來,形成閉合圖形。參數(shù)是一樣的。
points:一系列的用空格,逗號,換行符等分隔開的點(diǎn)。每個(gè)點(diǎn)必須有2個(gè)數(shù)字:x值和y值。所以下面3個(gè)點(diǎn) (0,0), (1,1)和(2,2)可以寫成:"0 0, 1 1, 2 2"。

路徑 - path元素
這個(gè)是最通用,最強(qiáng)力的元素了;使用這個(gè)元素你可以實(shí)現(xiàn)任何其他的圖形,不僅包括上面這些基本形狀,也可以實(shí)現(xiàn)像貝塞爾曲線那樣的復(fù)雜形狀;此外,使用path可以實(shí)現(xiàn)平滑的過渡線段,雖然也可以使用polyline來實(shí)現(xiàn)這種效果,但是需要提供的點(diǎn)很多,而且放大了效果也不好。這個(gè)元素控制位置和形狀的只有一個(gè)參數(shù):
d:一系列繪制指令和繪制參數(shù)(點(diǎn))組合成。

繪制指令分為絕對坐標(biāo)指令和相對坐標(biāo)指令兩種,這兩種指令使用的字母是一樣的,就是大小寫不一樣,絕對指令使用大寫字母,坐標(biāo)也是絕對坐標(biāo);相對指令使用對應(yīng)的小寫字母,點(diǎn)的坐標(biāo)表示的都是偏移量。

絕對坐標(biāo)繪制指令
這組指令的參數(shù)代表的是絕對坐標(biāo)。假設(shè)當(dāng)前畫筆所在的位置為(x0,y0),則下面的絕對坐標(biāo)指令代表的含義如下所示:

指令參數(shù)說明
Mx y將畫筆移動(dòng)到點(diǎn)(x,y)
Lx y畫筆從當(dāng)前的點(diǎn)繪制線段到點(diǎn)(x,y)
H畫筆從當(dāng)前的點(diǎn)繪制水平線段到點(diǎn)(x,y0)
V畫筆從當(dāng)前的點(diǎn)繪制豎直線段到點(diǎn)(x0,y)
Arx ry x-axis-rotation large-arc-flag sweep-flag x y畫筆從當(dāng)前的點(diǎn)繪制一段圓弧到點(diǎn)(x,y)
Cx1 y1, x2 y2, x y畫筆從當(dāng)前的點(diǎn)繪制一段三次貝塞爾曲線到點(diǎn)(x,y)
Sx2 y2, x y特殊版本的三次貝塞爾曲線(省略第一個(gè)控制點(diǎn))
Qx1 y1, x y 繪制二次貝塞爾曲線到點(diǎn)(x,y)
Tx y特殊版本的二次貝塞爾曲線(省略控制點(diǎn))
Z無參數(shù)繪制閉合圖形,如果d屬性不指定Z命令,則繪制線段,而不是封閉圖形。


移動(dòng)畫筆指令M,畫直線指令:L,H,V,閉合指令Z都比較簡單;下面重點(diǎn)看看繪制曲線的幾個(gè)指令。

繪制圓弧指令:A  rx ry x-axis-rotation large-arc-flag sweep-flag x y
用圓弧連接2個(gè)點(diǎn)比較復(fù)雜,情況也很多,所以這個(gè)命令有7個(gè)參數(shù),分別控制曲線的的各個(gè)屬性。下面解釋一下數(shù)值的含義:
rx,ry 是弧的半長軸、半短軸長度
x-axis-rotation 是此段弧所在的x軸與水平方向的夾角,即x軸的逆時(shí)針旋轉(zhuǎn)角度,負(fù)數(shù)代表順時(shí)針轉(zhuǎn)動(dòng)的角度。
large-arc-flag 為1 表示大角度弧線,0 代表小角度弧線。
sweep-flag 為1代表從起點(diǎn)到終點(diǎn)弧線繞中心順時(shí)針方向,0 代表逆時(shí)針方向。
x,y 是弧終端坐標(biāo)。
前兩個(gè)參數(shù)和后兩個(gè)參數(shù)就不多說了,很簡單;下面就說說中間的3個(gè)參數(shù):
x-axis-rotation代表旋轉(zhuǎn)的角度,體會下面例子中圓弧的不同:



代碼如下:


<svg width="320px" height="320px">
 <path d="M10 315
          L 110 215
          A 30 50 0 0 1 162.55 162.45
          L 172.55 152.45
          A 30 50 -45 0 1 215.1 109.9
          L 315 10" stroke="black" fill="green" stroke-width="2" fill-opacity="0.5"/>
</svg>



上面的HTML畫出下面的圖形:

HTML5 SVG中的圖形繪制介紹及使用是怎樣的

 
從圖中可以看到橢圓旋轉(zhuǎn)參數(shù)的不同導(dǎo)致繪制的圓弧方向不同,當(dāng)然這個(gè)參數(shù)對正圓來說沒有影響。

large-arc-flag和sweep-flag控制了圓弧的大小和走向,體會下面例子中圓弧的不同:



代碼如下:


<svg width="325px" height="325px">
 <path d="M80 80
          A 45 45, 0, 0, 0, 125 125
          L 125 80 Z" fill="green"/>
 <path d="M230 80
          A 45 45, 0, 1, 0, 275 125
          L 275 80 Z" fill="red"/>
 <path d="M80 230
          A 45 45, 0, 0, 1, 125 275
          L 125 230 Z" fill="purple"/>
 <path d="M230 230
          A 45 45, 0, 1, 1, 275 275
          L 275 230 Z" fill="blue"/>
</svg>



這個(gè)HTML繪制了下面的幾幅圖:

HTML5 SVG中的圖形繪制介紹及使用是怎樣的

 
從上面可以看出,這幾個(gè)參數(shù)其實(shí)是確定一段圓弧需要的參數(shù)。這里也看到,SVG中的圓弧比canvas中的復(fù)雜一些。

繪制三次貝塞爾曲線指令:C  x1 y1, x2 y2, x y    

三次貝塞爾曲線有兩個(gè)控制點(diǎn),就是(x1,y1)和(x2,y2),最后面(x,y)代表曲線的終點(diǎn)。體會下面的例子:



代碼如下:


<svg width="190px" height="160px">
 <path d="M10 10 C 20 20, 40 20, 50 10" stroke="black" fill="transparent"/>
 <path d="M70 10 C 70 20, 120 20, 120 10" stroke="black" fill="transparent"/>
 <path d="M130 10 C 120 20, 180 20, 170 10" stroke="black" fill="transparent"/>
 <path d="M10 60 C 20 80, 40 80, 50 60" stroke="black" fill="transparent"/>
 <path d="M70 60 C 70 80, 110 80, 110 60" stroke="black" fill="transparent"/>
 <path d="M130 60 C 120 80, 180 80, 170 60" stroke="black" fill="transparent"/>
 <path d="M10 110 C 20 140, 40 140, 50 110" stroke="black" fill="transparent"/>
 <path d="M70 110 C 70 140, 110 140, 110 110" stroke="black" fill="transparent"/>
 <path d="M130 110 C 120 140, 180 140, 170 110" stroke="black" fill="transparent"/>
</svg>



這個(gè)HTML片段繪制了下面的圖形:
HTML5 SVG中的圖形繪制介紹及使用是怎樣的

 從上面我們可以看到,控制點(diǎn)控制了曲線的弧度。

特殊版本的三次貝塞爾曲線:S  x2 y2, x y

很多時(shí)候,為了繪制平滑的曲線,需要多次連續(xù)繪制曲線。這個(gè)時(shí)候,為了平滑過渡,常常第二個(gè)曲線的控制點(diǎn)是第一個(gè)曲線控制點(diǎn)在曲線另外一邊的映射點(diǎn)。這個(gè)時(shí)候可以使用這個(gè)簡化版本。這里要注意的是,如果S指令前面沒有其他的S指令或C指令,這個(gè)時(shí)候會認(rèn)為兩個(gè)控制點(diǎn)是一樣的,退化成二次貝塞爾曲線的樣子;如果S指令是用在另外一個(gè)S指令或者C指令后面,這個(gè)時(shí)候后面這個(gè)S指令的第一個(gè)控制點(diǎn)會默認(rèn)設(shè)置為前面的這個(gè)曲線的第二個(gè)控制點(diǎn)的一個(gè)映射點(diǎn),體會一下:



代碼如下:


<svg width="190px" height="160px">
 <path d="M10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80" stroke="black" fill="transparent"/>
</svg>



這個(gè)HTML片段繪制如下圖形:

HTML5 SVG中的圖形繪制介紹及使用是怎樣的

上面的S指令只有第二個(gè)控制點(diǎn),第一個(gè)控制點(diǎn)采用了前面的曲線指令的第二個(gè)控制點(diǎn)的一個(gè)映射點(diǎn)。


繪制二次貝塞爾曲線指令:Q  x1 y1, x y , T x y  (特殊版本的二次貝塞爾曲線)
二次貝塞爾曲線只有一個(gè)控制點(diǎn)(x1,y1),通常如下圖所示:

HTML5 SVG中的圖形繪制介紹及使用是怎樣的

如果是連續(xù)的繪制曲線,同樣可以使用簡化版本T。同樣的,只有T前面是Q或者T指令的時(shí)候,后面的T指令的控制點(diǎn)會默認(rèn)設(shè)置為前面的曲線的控制點(diǎn)的映射點(diǎn),體會一下:



代碼如下:


<svg width="190px" height="160px">
 <path d="M10 80 Q 52.5 10, 95 80 T 180 80" stroke="black" fill="transparent"/>
</svg>



這個(gè)HTML片段繪制如下圖形:

HTML5 SVG中的圖形繪制介紹及使用是怎樣的

 
同樣的,如果T指令前面不是Q或者T指令,則認(rèn)為無控制點(diǎn),畫出來的是直線。

相對坐標(biāo)繪制指令
與絕對坐標(biāo)繪制指令的字母是一樣的,只不過全部是小寫表示。這組指令的參數(shù)中涉及坐標(biāo)的參數(shù)代表的是相對坐標(biāo),意思就是參數(shù)代表的是從當(dāng)前點(diǎn)到目標(biāo)點(diǎn)的偏移量,正數(shù)就代表向軸正向偏移,負(fù)數(shù)代表向反向偏移。不過對Z指令來說,大小寫沒有區(qū)別。

這里要注意,絕對坐標(biāo)指令與相對坐標(biāo)指令是可以混合使用的。有時(shí)混合使用可以帶來更靈活的畫法。

SVG path繪制注意事項(xiàng):
繪制帶孔的圖形時(shí)要注意:外層邊的繪制需要是逆時(shí)針順序的,里面的洞的邊的順序必須是順時(shí)針的。只有這樣繪制的圖形填充效果才會正確。

以上就是HTML5 SVG中的圖形繪制介紹及使用是怎樣的,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:HTML5SVG中的圖形繪制介紹及使用是怎樣的-創(chuàng)新互聯(lián)
分享URL:http://jinyejixie.com/article40/dcgceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、商城網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、服務(wù)器托管、云服務(wù)器、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
安塞县| 多伦县| 盐亭县| 舒城县| 青神县| 板桥市| 义马市| 星子县| 黎川县| 鄂尔多斯市| 深圳市| 青冈县| 哈密市| 万载县| 晋城| 东丽区| 祥云县| 平阳县| 共和县| 台前县| 尼木县| 海兴县| 辽中县| 醴陵市| 准格尔旗| 库尔勒市| 全椒县| 太湖县| 邹城市| 荥经县| 阳江市| 美姑县| 镇坪县| 山阳县| 皋兰县| 甘谷县| 福州市| 丰宁| 西盟| 沅江市| 青岛市|