pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

SVG基礎 | SVG PATH 元素

SVG的path元素用于定義一些復雜的圖形。它可以結合使用直線,曲線等來制作各種不規則的圖形。path元素是SVG基本圖形中最為復雜的一個。要掌握和理解它也需要下一點苦工。 ...,HTML
1.jpg

  SVG的<path>元素用于定義一些復雜的圖形。它可以結合使用直線,曲線等來制作各種不規則的圖形。<path>元素是SVG基本圖形中最為復雜的一個。要掌握和理解它也需要下一點苦工。先來看一個例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <path d="M50,50
  3.            A30,30 0 0,1 35,20
  4.            L100,100
  5.            M110,110
  6.            L100,0"
  7.         style="stroke:#660000; fill:none;"/>  
  8. </svg>   
復制代碼

  上面代碼的返回結果如下:
2.jpg
  可以看到SVG圖像中包含一條曲線和倆條直線,并且第二條直線是立刻第一條直線一段距離的。

  所有的這些繪制工作都是在<path>元素中通過d屬性來完成的。<d>屬性包含了一些用于繪制的命令。在上面的例子中,M命令代表“Move to”(移動到)的意思。A命令代表一個“arc”(弧線)。L命令代表“Line”(直線)。這些命令都由一支“虛擬的畫筆”來執行,這支筆可以移動和繪制圖形。

  設置和移動虛擬畫筆

  在<path>元素的d屬性中的第一個命令總是一個移動命令。在你繪制圖形之前你必須移動虛擬畫筆到某個位置上。移動畫筆通過M指令來完成。看下面的例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <path d="M50,50"
  3.           style="stroke:#660000; fill:none;"/>  
  4. </svg>   
復制代碼
  上面的例子將虛擬畫筆移動到(50,50)坐標的位置上。然后接下來的繪制命令將從這個位置開始繪制圖形。

  直線

  直線命令是<path>元素最簡單的命令。繪制直線使用L或l指令。下面是一個例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <path d="M50,50
  3.              L100,100"
  4.           style="stroke:#660000; fill:none;"/>
  5. </svg>     
復制代碼
  上面的例子從(50,50)坐標開始繪制一條直線,直線的終點在(100,100)的位置。下面是返回結果:
3.jpg
  直線命令L和l有什么區別呢?大小的L指令繪制一條直線到一個絕度位置的點,而小寫的l指令繪制一條直線到一個相對位置的點。相對位置的點是指從虛擬畫筆開始繪制的點的坐標加上由l指令給出的坐標。看不懂?沒關系,我們來舉個例子:假如虛擬畫筆開始繪制的位置是(50,50),l指令給出的坐標是(100,100),那么直線將從(50,50)位置開始繪制,繪制到(50+100,50+100)的位置。如果使用的是L100,100指令,那么就是從(50,50)位置開始繪制直線,繪制到(100,100)的位置。

  路徑圖形總是從虛擬畫筆的最后位置開始到新的坐標點繪制圖形。每一個繪制命令都有一個結束點。在執行了這些繪制命令后,虛擬畫筆會定位在這些命令所決定的結束點上。下一次的繪制命令將從這些點開始繪制。

  弧線

  使用<path>元素來繪制弧線使用A或a指令。大小和小寫指令的意義與直線命令相同。看下面的例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <path d="M50,50
  3.              A30,50 0 0,1 100,100"
  4.           style="stroke:#660000; fill:none;"/>
  5. </svg>   
復制代碼

  上面代碼的返回結果如下:
4.jpg
  這個例子從(50,50)開始繪制弧線,結束點位置在(100,100)。

  弧線的半徑有A指令的兩個數值決定。第一個參數是rx,水平方向上的半徑,第二個參數是ry,垂直方向上的半徑。如果rx和ry設置為相同的值,那么將得到一個圓形的弧線。rx和ry設置為不同的值將得到一個橢圓形的弧線。上面的例子中,rx的值為30,ry的值為50。

  A指令上的第三個參數是x-axis-rotation。這個參數用于設置弧線X軸方向上的旋轉。通常不需要改變這個參數,它的默認值為0。

  第四和第五個參數分別為large-arc-flag和sweep-flag。它們是兩個標志位。我們知道,從A點到B點繪制一條弧線,可以得到兩條不同的弧線。一條較大,另一條較小。large-arc-flag就是用于決定到底是繪制較大的那一條弧線還是繪制較小的那一條弧線。

  下面來看一個例子,下面繪制4條相同的弧線,分別使用不同的large-arc-flag和sweep-flag值:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <path d="M40,20  A30,30 0 0,0 70,70"
  3.       style="stroke: #cccc00; stroke-width:2; fill:none;"/>

  4.   <path d="M40,20  A30,30 0 1,0 70,70"
  5.       style="stroke: #ff0000; stroke-width:2; fill:none;"/>

  6.   <path d="M40,20  A30,30 0 1,1 70,70"
  7.       style="stroke: #00ff00; stroke-width:2; fill:none;"/>

  8.   <path d="M40,20  A30,30 0 0,1 70,70"
  9.       style="stroke: #0000ff; stroke-width:2; fill:none;"/>
  10. </svg>      
復制代碼

  先來看看結果:
5.jpg
  4條不同的弧線都是從(40,20)繪制到(60,70)。它們的rx和ry值相等,因此是一個正圓圓弧。這4條弧線分別為一條長弧線,一條短弧線,還有兩條是前面兩條弧線的鏡像。large-arc-flag屬性決定是繪制長弧線還是短弧線。sweep-flag決定是否沿開始點到結束點的直線來鏡像弧線。實際上,sweep-flag是控制弧線的繪制方向,順時針或逆時針繪制弧線,得到的結果是一種“鏡像”效果。

  上面的代碼繪制的第一條弧線是一條黃色的弧線。它的large-arc-flag屬性設置為0,這意味著較小的弧線將被繪制。sweep-flag也被設置為0,這意味著不鏡像弧線。黃色弧線的返回結果如下:
6.jpg
  第二條被繪制的弧線是紅色的弧線。它的large-arc-flag屬性設置為1,這意味著較大的弧線將被繪制。sweep-flag屬性設置為0,這意味著不鏡像弧線。紅色弧線的返回結果如下:
7.jpg
  第三條被繪制的弧線是綠色的弧線。它是紅色的弧線的一個鏡像(沿弧線的開始點和結束點形成的直線做鏡像)。可以看到它的sweep-flag屬性被置為1。

  第四條弧線是藍色的弧線,它是黃色弧線的鏡像,原因是它的sweep-flag屬性被置為1。

  貝茲曲線

  使用<path>元素也可以繪制二次貝茲曲線。繪制二次貝茲曲線使用Q或q命令。大小寫版本的Q命令和直線的原理相同。大小版本的指令代表結束點位于絕對坐標系中。小寫版本的的指令代表結束點位于相對坐標系中(相對于開始點)。下面是一個二次貝茲曲線的例子:
  1. <path d="M50,50 Q50,100 100,100"
  2.       style="stroke: #006666; fill:none;"/>      
復制代碼

  它的返回結果如下:
8.jpg
  上面的例子從(50,50)開始到(100,100)位置結束繪制一條二次貝茲曲線,控制點的位置在(50,100)的位置。控制點是由Q指令設置的兩個參數。

  如果你使用過一些矢量圖像編輯軟件,如Adobe Illustrator,那么你就會了解什么是貝茲曲線和控制點。在一個矢量圖上的某個點,我們可以看到這個點上有兩個控制手柄,通過拖拽這兩個手柄可以調節這一點的弧度的大小。

  控制點能夠像磁鐵一樣拉伸曲線。控制點越接近弧線,弧線越平滑。控制點月遠離弧線,弧線越被拉伸。下面是幾個不同位置控制點的例子:
9.jpg
  實際上,如果你從開始點繪制一條直線到控制點,在從控制點繪制一條直線到結束點,然后將這兩條直線的中心點相連,那么這條連線正好和這條弧線相切。如下面的圖像所示:
10.jpg
  三次貝茲曲線

  繪制三次貝茲曲線的命令是C和c。三次貝茲曲線和二次貝茲曲線相同,但是它有兩個控制點。大寫的命令的結束點使用絕對坐標系,小寫的命令的結束點使用的是相對坐標系(相對于開始點)。下面是一個三次貝茲曲線的例子:
  1. <path d="M50,50 C75,80 125,20 150,50"
  2.       style="stroke: #006666; fill:none;"/>      
復制代碼

  下面是它的返回結果,另外還繪制了它的兩個控制點。
11.jpg
  你可以使用三次貝茲曲線來繪制一些復雜的曲線。下面是一些例子:
12.jpg
  閉合路徑

  <path>元素有一個閉合路徑的快捷命令。閉合路徑是指從最后一個繪制點連線到開始點。這個命令是Z(或z,這里大小寫沒有區別)。下面是一個例子:
  1. <path d="M50,50 L100,50 L100,100 Z"
  2.     style="stroke: #006666; fill:none;"/>   
復制代碼

  下面是上面代碼的返回結果:
13.jpg
  結合使用各種命令

  我們可以在<path>中集合使用各種繪制命令。下面是一個例子:
  1. <path d="M100,100
  2.          L150,100
  3.          a50,25 0 0,0 150,100
  4.          q50,-50 70,-170
  5.          Z"
  6.       style="stroke: #006666; fill: none;"/>   
復制代碼

  上面的代碼繪制了一條直線,一條弧線和一條二次貝茲曲線,并且最后使用Z指令來閉合路徑。得到的結果如下:
14.jpg
  填充路徑

  我們可以使用CSS的fill屬性來填充路徑。看下面的例子:
  1. <path d="M100,100 L150,100 L150,150  Z"
  2.       style="stroke: #0000cc;
  3.              stroke-width: 2px;
  4.              fill  : #ccccff;"/>   
復制代碼

  上面代碼得到的結果如下:
15.jpg
  重復指令的簡寫方式

  如果你重復多次連續使用同一個命令,可以可以將其省略,只寫后面的參數即可。例如下面的例子:
  1. <path d="M10,10   l100,0  0,50  -100,0  0,-50"
  2.       style="stroke: #000000; fill:none;" />  
復制代碼

  在上面的例子中,多次連續使用了l指令來繪制直線,除了第一個l指令外,其他的都可以省略。得到的結果如下面所示:
16.jpg
  PATH命令

  在下面列出了SVG<path> 元素的虛擬畫筆可以使用的命令。大小的指令通常將參數坐標解析為絕對坐標。小寫的指令通常將參數坐標解析為相對坐標。

指令參數名稱描述
Mx,ymoveto移動虛擬畫筆到指定的(x,y)坐標,僅移動不繪制
mx,ymoveto移動虛擬畫筆到指定的(x,y)坐標,這個坐標是相對于當前畫筆的坐標,僅移動不繪制
Lx,ylineto從當前畫筆所在位置繪制一條直線到指定的(x,y)坐標
lx,ylineto從當前畫筆所在位置繪制一條直線到指定的(x,y)坐標,(x,y)坐標是相對于花瓣位置的點
Hxhorizontal lineto繪制一條水平直線到參數指定的x坐標點,y坐標為畫筆的y坐標
hxhorizontal lineto繪制一條水平直線到參數指定的x坐標點(當前x + 指定的x),x坐標相對于當前畫筆x坐標
Vyvertical lineto從當前位置繪制一條垂直直線到參數指定的y坐標
vyhorizontal lineto從當前位置繪制一條垂直直線到參數指定的y坐標,y坐標相對于當前畫筆的y坐標
Cx1,y1 x2,y2 x,ycurveto從當前畫筆位置繪制一條三次貝茲曲線到參數(x,y)指定的坐標。x1,y1和x2,y2是曲線的開始和結束控制點,用于控制曲線的弧度
cx1,y1 x2,y2 x,ycurveto于大小C指令相同,但是坐標是相對于畫筆的坐標
Sx2,y2 x,yshorthand / smooth curveto從當前畫筆位置繪制一條三次貝茲曲線到參數(x,y)指定的坐標。x2,y2是結束控制點。開始控制點和前一條曲線的結束控制點相同
sx2,y2 x,yshorthand / smooth curveto和大小的S指令相同,但是坐標是相對于當前畫筆的坐標點
Qx1,y1 x,y二次貝茲曲線從當前畫筆位置繪制一條二次貝茲曲線到參數(x,y)指定的坐標。x1,y1是控制點,用于控制曲線的弧度
qx1,y1 x,y二次貝茲曲線和大小的Q指令相同,但是坐標是相對于當前畫筆的坐標點
Tx,y平滑的二次貝茲曲線從當前畫筆位置繪制一條二次貝茲曲線到參數(x,y)指定的坐標。控制點被假定為最后一次使用的控制點
tx,y平滑的二次貝茲曲線和大小的T指令相同,但是坐標是相對于當前畫筆的坐標點
Arx,ry x-axis-rotation large-arc-flag,sweepflag x,y橢圓弧線從當前畫筆位置開始繪制一條橢圓弧線到(x,y)指定的坐標。rx和ry分別為橢圓弧線水平和垂直方向上的半徑。x-axis-rotation指定弧線繞x軸旋轉的度數。它只在rx和ry的值不相同是有效果。large-arc-flag是大弧標志位,取值0或1,用于決定繪制大弧還是小弧。sweep-flag用于決定弧線繪制的方向
arx,ry x-axis-rotation large-arc-flag,sweepflag x,y橢圓弧線和大寫的A指令相同,但是坐標是相對于當前畫筆的坐標點
Z閉合路徑從結束點繪制一條直線到開始點,閉合路徑
z閉合路徑從結束點繪制一條直線到開始點,閉合路徑

  本文版權屬于jQuery之家,轉載請注明出處:http://www.htmleaf.com/ziliaoku/ ... g/201506142036.html


【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 | 焊锡丝|焊锡条|无铅锡条|无铅锡丝|无铅焊锡线|低温锡膏-深圳市川崎锡业科技有限公司 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 精密模具加工制造 - 富东懿 | 高压微雾加湿器_工业加湿器_温室喷雾-昌润空气净化设备 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 浙江寺庙设计-杭州寺院设计-宁波寺庙规划_汉匠 | 中国在职研究生招生信息网| 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家| 低温等离子清洗机(双气路进口)-嘉润万丰 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 除尘布袋_液体过滤袋_针刺毡滤料-杭州辉龙过滤技术有限公司 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | 真空乳化机-灌装封尾机-首页-温州精灌| 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 陕西自考报名_陕西自学考试网 | 压砖机、液压制砖机、静压砖机、环保砖机生产厂家—杜甫机械 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 智慧旅游_智慧景区_微景通-智慧旅游景区解决方案提供商 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 球盟会·(中国)官方网站|