SVG基础|SVG PATH 元素
ht

SVG的
-
- style="stroke:#660000; fill:none;"/>
上面代码的返回结果如下:

可以看到SVG图像中包含一条曲线和俩条直线,并且第二条直线是立刻第一条直线一段距离的。
所有的这些绘制工作都是在
设置和移动虚拟画笔
在
-
- style="stroke:#660000; fill:none;"/>
直线
直线命令是
-
- style="stroke:#660000; fill:none;"/>

直线命令L和l有什么区别呢?大小的L指令绘制一条直线到一个绝度位置的点,而小写的l指令绘制一条直线到一个相对位置的点。相对位置的点是指从虚拟画笔开始绘制的点的坐标加上由l指令给出的坐标。看不懂?没关系,我们来举个例子:假如虚拟画笔开始绘制的位置是(50,50),l指令给出的坐标是(100,100),那么直线将从(50,50)位置开始绘制,绘制到(50+100,50+100)的位置。如果使用的是L100,100指令,那么就是从(50,50)位置开始绘制直线,绘制到(100,100)的位置。
路径图形总是从虚拟画笔的最后位置开始到新的坐标点绘制图形。每一个绘制命令都有一个结束点。在执行了这些绘制命令后,虚拟画笔会定位在这些命令所决定的结束点上。下一次的绘制命令将从这些点开始绘制。
弧线
使用
-
- style="stroke:#660000; fill:none;"/>
上面代码的返回结果如下:

这个例子从(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值:
-
- style="stroke: #cccc00; stroke-width:2; fill:none;"/>
-
-
- style="stroke: #ff0000; stroke-width:2; fill:none;"/>
-
-
- style="stroke: #00ff00; stroke-width:2; fill:none;"/>
-
-
- style="stroke: #0000ff; stroke-width:2; fill:none;"/>
先来看看结果:

4条不同的弧线都是从(40,20)绘制到(60,70)。它们的rx和ry值相等,因此是一个正圆圆弧。这4条弧线分别为一条长弧线,一条短弧线,还有两条是前面两条弧线的镜像。large-arc-flag属性决定是绘制长弧线还是短弧线。sweep-flag决定是否沿开始点到结束点的直线来镜像弧线。实际上,sweep-flag是控制弧线的绘制方向,顺时针或逆时针绘制弧线,得到的结果是一种“镜像”效果。
上面的代码绘制的第一条弧线是一条黄色的弧线。它的large-arc-flag属性设置为0,这意味着较小的弧线将被绘制。sweep-flag也被设置为0,这意味着不镜像弧线。黄色弧线的返回结果如下:

第二条被绘制的弧线是红色的弧线。它的large-arc-flag属性设置为1,这意味着较大的弧线将被绘制。sweep-flag属性设置为0,这意味着不镜像弧线。红色弧线的返回结果如下:

第三条被绘制的弧线是绿色的弧线。它是红色的弧线的一个镜像(沿弧线的开始点和结束点形成的直线做镜像)。可以看到它的sweep-flag属性被置为1。
第四条弧线是蓝色的弧线,它是黄色弧线的镜像,原因是它的sweep-flag属性被置为1。
贝兹曲线
使用
- style="stroke: #006666; fill:none;"/>
它的返回结果如下:

上面的例子从(50,50)开始到(100,100)位置结束绘制一条二次贝兹曲线,控制点的位置在(50,100)的位置。控制点是由Q指令设置的两个参数。
如果你使用过一些矢量图像编辑软件,如Adobe Illustrator,那么你就会了解什么是贝兹曲线和控制点。在一个矢量图上的某个点,我们可以看到这个点上有两个控制手柄,通过拖拽这两个手柄可以调节这一点的弧度的大小。
控制点能够像磁铁一样拉伸曲线。控制点越接近弧线,弧线越平滑。控制点月远离弧线,弧线越被拉伸。下面是几个不同位置控制点的例子:

实际上,如果你从开始点绘制一条直线到控制点,在从控制点绘制一条直线到结束点,然后将这两条直线的中心点相连,那么这条连线正好和这条弧线相切。如下面的图像所示:

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

你可以使用三次贝兹曲线来绘制一些复杂的曲线。下面是一些例子:

闭合路径
- style="stroke: #006666; fill:none;"/>
下面是上面代码的返回结果:

结合使用各种命令
我们可以在
- style="stroke: #006666; fill: none;"/>
上面的代码绘制了一条直线,一条弧线和一条二次贝兹曲线,并且最后使用Z指令来闭合路径。得到的结果如下:

填充路径
我们可以使用CSS的fill属性来填充路径。看下面的例子:
- style="stroke: #0000cc;
- stroke-width: 2px;
- fill : #ccccff;"/>
上面代码得到的结果如下:

重复指令的简写方式
如果你重复多次连续使用同一个命令,可以可以将其省略,只写后面的参数即可。例如下面的例子:
- style="stroke: #000000; fill:none;" />
在上面的例子中,多次连续使用了l指令来绘制直线,除了第一个l指令外,其他的都可以省略。得到的结果如下面所示:

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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文解释了如何使用< audio>元素,包括用于格式选择的最佳实践(MP3,OGG Vorbis),文件优化和JavaScript控件用于播放。 它强调使用多个音频f

本文讨论了使用HTML5页面可见性API来检测页面可见性,提高用户体验并优化资源使用情况。关键方面包括暂停媒体,减少CPU负载以及基于可见性变化管理分析。

本文使用JavaScript详细介绍了创建Interactive HTML5游戏。 它涵盖了游戏设计,HTML结构,CSS样式,JavaScript逻辑(包括事件处理和动画)以及音频集成。 必需的JavaScript库(Phaser,Pi

本文解释了如何创建和验证HTML5表格。 它详细介绍了>元素,输入类型(文本,电子邮件,编号等)和属性(必需,模式,最小,最大)。 HTML5的优势比旧方法形成

本文讨论了使用视口元标记来控制移动设备上的页面缩放,重点是宽度和初始尺度之类的设置,以获得最佳响应和性能。

本文讨论了使用GeOlocation API管理用户位置隐私和权限,并强调要求权限,确保数据安全性并遵守隐私法律的最佳实践。

本文介绍了如何使用HTML5拖放API来创建交互式用户界面,详细介绍了使元素可拖动的步骤,处理关键事件并通过自定义反馈来增强用户体验。它还讨论了一个常见的陷阱
