SVG基础|SVG PATH 元素

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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article explique comment intégrer l'audio dans HTML5 en utilisant l'AUDIO & GT; Element, y compris les meilleures pratiques pour la sélection du format (MP3, Ogg Vorbis), l'optimisation des fichiers et le contrôle JavaScript pour la lecture. Il met l'accent sur l'utilisation de plusieurs audio F

Cet article explique comment créer et valider les formulaires HTML5. Il détaille le & lt; formulaire & gt; élément, types d'entrée (texte, e-mail, numéro, etc.) et attributs (requis, modèle, min, max). Les avantages des formes HTML5 sur les méthodes plus anciennes, incl

L'article discute de l'utilisation de l'API de visibilité de la page HTML5 pour détecter la visibilité de la page, améliorer l'expérience utilisateur et optimiser l'utilisation des ressources. Les aspects clés comprennent la pause des supports, la réduction de la charge du processeur et la gestion de l'analyse en fonction des changements de visibilité.

L'article discute de l'utilisation de balises Meta pour contrôler la mise à l'échelle des pages sur les appareils mobiles, en se concentrant sur des paramètres tels que la largeur et l'échelle initiale pour une réactivité et des performances optimales. COMMANDE: 159

L'article traite de la gestion de la confidentialité de l'emplacement des utilisateurs et des autorisations à l'aide de l'API Geolocation, mettant l'accent sur les meilleures pratiques pour demander des autorisations, assurer la sécurité des données et se conformer aux lois sur la confidentialité.

Cet article détaille la création de jeux HTML5 interactifs à l'aide de JavaScript. Il couvre la conception de jeux, la structure HTML, le style CSS, la logique JavaScript (y compris la gestion des événements et l'animation) et l'intégration audio. Bibliothèques JavaScript essentielles (Phaser, Pi

L'article explique comment utiliser l'API HTML5 Drag and Drop pour créer des interfaces utilisateur interactives, détaillant les étapes pour rendre les éléments dragables, gérer les événements clés et améliorer l'expérience utilisateur avec des commentaires personnalisés. Il discute également des pièges communs à un

Cet article explique l'API HTML5 WebSockets pour la communication client-serveur bidirectionnelle en temps réel. Il détaille les implémentations côté client (JavaScript) et côté serveur (Python / Flask), résolvant des défis tels que l'évolutivité, la gestion de l'état, un
