搜尋
首頁web前端H5教程SVG基础|SVG PATH 元素

1.jpg

  SVG的元素用于定义一些复杂的图形。它可以结合使用直线,曲线等来制作各种不规则的图形。元素是SVG基本图形中最为复杂的一个。要掌握和理解它也需要下一点苦工。先来看一个例子:

  1.   
  2.         style="stroke:#660000; fill:none;"/>  
  3.    
复制代码

  上面代码的返回结果如下:
2.jpg
  可以看到SVG图像中包含一条曲线和俩条直线,并且第二条直线是立刻第一条直线一段距离的。

  所有的这些绘制工作都是在元素中通过d属性来完成的。属性包含了一些用于绘制的命令。在上面的例子中,M命令代表“Move to”(移动到)的意思。A命令代表一个“arc”(弧线)。L命令代表“Line”(直线)。这些命令都由一支“虚拟的画笔”来执行,这支笔可以移动和绘制图形。

  设置和移动虚拟画笔

  在元素的d属性中的第一个命令总是一个移动命令。在你绘制图形之前你必须移动虚拟画笔到某个位置上。移动画笔通过M指令来完成。看下面的例子:

  1.   
  2.           style="stroke:#660000; fill:none;"/>  
  3.    
复制代码
  上面的例子将虚拟画笔移动到(50,50)坐标的位置上。然后接下来的绘制命令将从这个位置开始绘制图形。

  直线

  直线命令是元素最简单的命令。绘制直线使用L或l指令。下面是一个例子:

  1.   
  2.           style="stroke:#660000; fill:none;"/>
  3.      
复制代码
  上面的例子从(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)的位置。

  路径图形总是从虚拟画笔的最后位置开始到新的坐标点绘制图形。每一个绘制命令都有一个结束点。在执行了这些绘制命令后,虚拟画笔会定位在这些命令所决定的结束点上。下一次的绘制命令将从这些点开始绘制。

  弧线

  使用元素来绘制弧线使用A或a指令。大小和小写指令的意义与直线命令相同。看下面的例子:

  1.   
  2.           style="stroke:#660000; fill:none;"/>
  3.    
复制代码

  上面代码的返回结果如下:
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.   
  2.       style="stroke: #cccc00; stroke-width:2; fill:none;"/>

  3.   
  4.       style="stroke: #ff0000; stroke-width:2; fill:none;"/>

  5.   
  6.       style="stroke: #00ff00; stroke-width:2; fill:none;"/>

  7.   
  8.       style="stroke: #0000ff; stroke-width:2; fill:none;"/>
  9.       
复制代码

  先来看看结果:
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。

  贝兹曲线

  使用元素也可以绘制二次贝兹曲线。绘制二次贝兹曲线使用Q或q命令。大小写版本的Q命令和直线的原理相同。大小版本的指令代表结束点位于绝对坐标系中。小写版本的的指令代表结束点位于相对坐标系中(相对于开始点)。下面是一个二次贝兹曲线的例子:
  1.       style="stroke: #006666; fill:none;"/>      
复制代码

  它的返回结果如下:
8.jpg
  上面的例子从(50,50)开始到(100,100)位置结束绘制一条二次贝兹曲线,控制点的位置在(50,100)的位置。控制点是由Q指令设置的两个参数。

  如果你使用过一些矢量图像编辑软件,如Adobe Illustrator,那么你就会了解什么是贝兹曲线和控制点。在一个矢量图上的某个点,我们可以看到这个点上有两个控制手柄,通过拖拽这两个手柄可以调节这一点的弧度的大小。

  控制点能够像磁铁一样拉伸曲线。控制点越接近弧线,弧线越平滑。控制点月远离弧线,弧线越被拉伸。下面是几个不同位置控制点的例子:
9.jpg
  实际上,如果你从开始点绘制一条直线到控制点,在从控制点绘制一条直线到结束点,然后将这两条直线的中心点相连,那么这条连线正好和这条弧线相切。如下面的图像所示:
10.jpg
  三次贝兹曲线

  绘制三次贝兹曲线的命令是C和c。三次贝兹曲线和二次贝兹曲线相同,但是它有两个控制点。大写的命令的结束点使用绝对坐标系,小写的命令的结束点使用的是相对坐标系(相对于开始点)。下面是一个三次贝兹曲线的例子:
  1.       style="stroke: #006666; fill:none;"/>      
复制代码

  下面是它的返回结果,另外还绘制了它的两个控制点。
11.jpg
  你可以使用三次贝兹曲线来绘制一些复杂的曲线。下面是一些例子:
12.jpg
  闭合路径

  元素有一个闭合路径的快捷命令。闭合路径是指从最后一个绘制点连线到开始点。这个命令是Z(或z,这里大小写没有区别)。下面是一个例子:
  1.     style="stroke: #006666; fill:none;"/>   
复制代码

  下面是上面代码的返回结果:
13.jpg
  结合使用各种命令

  我们可以在中集合使用各种绘制命令。下面是一个例子:
  1.       style="stroke: #006666; fill: none;"/>   
复制代码

  上面的代码绘制了一条直线,一条弧线和一条二次贝兹曲线,并且最后使用Z指令来闭合路径。得到的结果如下:
14.jpg
  填充路径

  我们可以使用CSS的fill属性来填充路径。看下面的例子:
  1.       style="stroke: #0000cc;
  2.              stroke-width: 2px;
  3.              fill  : #ccccff;"/>   
复制代码

  上面代码得到的结果如下:
15.jpg
  重复指令的简写方式

  如果你重复多次连续使用同一个命令,可以可以将其省略,只写后面的参数即可。例如下面的例子:
  1.       style="stroke: #000000; fill:none;" />  
复制代码

  在上面的例子中,多次连续使用了l指令来绘制直线,除了第一个l指令外,其他的都可以省略。得到的结果如下面所示:
16.jpg
  PATH命令

  在下面列出了SVG 元素的虚拟画笔可以使用的命令。大小的指令通常将参数坐标解析为绝对坐标。小写的指令通常将参数坐标解析为相对坐标。

指令 参数 名称 描述
M x,y moveto 移动虚拟画笔到指定的(x,y)坐标,仅移动不绘制
m x,y moveto 移动虚拟画笔到指定的(x,y)坐标,这个坐标是相对于当前画笔的坐标,仅移动不绘制
L x,y lineto 从当前画笔所在位置绘制一条直线到指定的(x,y)坐标
l x,y lineto 从当前画笔所在位置绘制一条直线到指定的(x,y)坐标,(x,y)坐标是相对于花瓣位置的点
H x horizontal lineto 绘制一条水平直线到参数指定的x坐标点,y坐标为画笔的y坐标
h x horizontal lineto 绘制一条水平直线到参数指定的x坐标点(当前x + 指定的x),x坐标相对于当前画笔x坐标
V y vertical lineto 从当前位置绘制一条垂直直线到参数指定的y坐标
v y horizontal lineto 从当前位置绘制一条垂直直线到参数指定的y坐标,y坐标相对于当前画笔的y坐标
C x1,y1 x2,y2 x,y curveto 从当前画笔位置绘制一条三次贝兹曲线到参数(x,y)指定的坐标。x1,y1和x2,y2是曲线的开始和结束控制点,用于控制曲线的弧度
c x1,y1 x2,y2 x,y curveto 于大小C指令相同,但是坐标是相对于画笔的坐标
S x2,y2 x,y shorthand / smooth curveto 从当前画笔位置绘制一条三次贝兹曲线到参数(x,y)指定的坐标。x2,y2是结束控制点。开始控制点和前一条曲线的结束控制点相同
s x2,y2 x,y shorthand / smooth curveto 和大小的S指令相同,但是坐标是相对于当前画笔的坐标点
Q x1,y1 x,y 二次贝兹曲线 从当前画笔位置绘制一条二次贝兹曲线到参数(x,y)指定的坐标。x1,y1是控制点,用于控制曲线的弧度
q x1,y1 x,y 二次贝兹曲线 和大小的Q指令相同,但是坐标是相对于当前画笔的坐标点
T x,y 平滑的二次贝兹曲线 从当前画笔位置绘制一条二次贝兹曲线到参数(x,y)指定的坐标。控制点被假定为最后一次使用的控制点
t x,y 平滑的二次贝兹曲线 和大小的T指令相同,但是坐标是相对于当前画笔的坐标点
A rx,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用于决定弧线绘制的方向
a rx,ry x-axis-rotation large-arc-flag,sweepflag x,y 椭圆弧线 和大写的A指令相同,但是坐标是相对于当前画笔的坐标点
Z 闭合路径 从结束点绘制一条直线到开始点,闭合路径
z 闭合路径 从结束点绘制一条直线到开始点,闭合路径

  本文版权属于jQuery之家,转载请注明出处:http://www.htmleaf.com/ziliaoku/ ... g/201506142036.html


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
H5代碼:Web開發人員的最佳實踐H5代碼:Web開發人員的最佳實踐Apr 16, 2025 am 12:14 AM

H5代碼的最佳實踐包括:1.使用正確的DOCTYPE聲明和字符編碼;2.採用語義化標籤;3.減少HTTP請求;4.使用異步加載;5.優化圖像。這些實踐能提升網頁的效率、可維護性和用戶體驗。

H5:網絡標準和技術的發展H5:網絡標準和技術的發展Apr 15, 2025 am 12:12 AM

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显著的发展。1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。2)CSS3增加了动画和过渡功能,使页面效果更加丰富。3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5是HTML5的速記嗎?探索細節H5是HTML5的速記嗎?探索細節Apr 14, 2025 am 12:05 AM

H5不僅僅是HTML5的簡稱,它代表了一個更廣泛的現代網頁開發技術生態:1.H5包括HTML5、CSS3、JavaScript及相關API和技術;2.它提供更豐富、互動、流暢的用戶體驗,能在多設備上無縫運行;3.使用H5技術棧可以創建響應式網頁和復雜交互功能。

H5和HTML5:網絡開發中常用的術語H5和HTML5:網絡開發中常用的術語Apr 13, 2025 am 12:01 AM

H5與HTML5指的是同一個東西,即HTML5。 HTML5是HTML的第五個版本,帶來了語義化標籤、多媒體支持、畫布與圖形、離線存儲與本地存儲等新功能,提升了網頁的表現力和交互性。

H5指的是什麼?探索上下文H5指的是什麼?探索上下文Apr 12, 2025 am 12:03 AM

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5:工具,框架和最佳實踐H5:工具,框架和最佳實踐Apr 11, 2025 am 12:11 AM

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

HTML5的遺產:當前了解H5HTML5的遺產:當前了解H5Apr 10, 2025 am 09:28 AM

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee

H5代碼:可訪問性和語義HTMLH5代碼:可訪問性和語義HTMLApr 09, 2025 am 12:05 AM

H5通過語義化元素和ARIA屬性提升網頁的可訪問性和SEO效果。 1.使用、、等元素組織內容結構,提高SEO。 2.ARIA屬性如aria-label增強可訪問性,輔助技術用戶可順利使用網頁。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用