路径相比于多边形<polygon>元素具有更强绘图能力,<polygon>元素可以绘制任意的多边形,而路径可以绘制任意的轮廓线,是线段,曲线,圆弧的组合形式。svg中可以使用<path>元素绘制路径,所有描述轮廓线的数据都放在d属性中,并且所有的路径必须以moveto命令开始,命令以大写的M开始,后面跟着用空格或者逗号分隔的x坐标和y坐标,例如:

<path d="M 10,10 L 110,130" stroke="black"></path>

上面的代码相当于

<line x1="10" y1="10" x2="110" y2="130" stroke="black"></line>

绘制一条从(10,10)到(110,130)的线段,其中的L表示lineto命令,接下来会有详解

绘制线段

在路径中绘制直线的命令是lineto命令,在d属性中以大写L或者小写l表示,大写的L表示绝对坐标,小写的l表示相对坐标,lineto命令之后跟着线段的终点坐标,表示从上一个坐标绘制一条线段到lineto命令之后的坐标,比如以下代码:

<path d="M 10,10 L 110,130" stroke="black"></path>

就是绘制一条从(10,10)到(110,130)的线段,因为代码中使用大写的L表示lineto命令,所以L之后的坐标为绝对坐标。

<path d="M 10,10 l 100,120" stroke="black"></path>

上述代码绘制的线段也是一条从(10,10)到(110,130)的线段,因为代码中使用小写的l表示相对坐标,l之后的数值表示从当前坐标水平平移100个单位,垂直平移120个单位,确定线段终点的坐标来绘制线段,也就是说l之后的两个数值是相对于当前坐标的,不是坐标系上的绝对坐标

在绘制线段的时候不可避免甚至会频繁的绘制竖直线段或者水平线段,所以svg规范指定了绘制水平线段和竖直线段的快捷方式。

绘制水平线段的时候可以使用大写或者小写H之后跟x坐标来简写,当使用大写H时,H之后的数值表示的是坐标系x的绝对坐标,相当于从当前坐标(currentX,currentY)绘制一条到(X,currentY)的线段,X为H之后的数值。使用小写的h时,h之后的数值表示的是相对x坐标,相当于绘制一条从当前坐标(currentX,currentY)到(currentX+X,currentY)的线段,X为h之后的数值。

绘制竖直线段的时候可以使用大写或者小写的V之后跟着y坐标来简写,使用V的规则同上,绘制的线段相当于从(currentX,currentY)到(currentX,Y)绝对坐标(使用大写V)或者从(currentX,currentY)到(currentX,currentY +Y)相对坐标(使用小写v)

示例代码:

<!DOCTYPE html>
<html>
<head>
<title>SVG</title>
</head>
<body>
<svg width="300" height="300" style="border:1px solid #000">
<path d="M 10,10 H 100" stroke="black"></path>
<path d="M 10,20 h 100" stroke="black"></path>
<path d="M 10,30 V 100" stroke="black"></path>
<path d="M 20,40 v 100" stroke="black"></path>
</svg>
</body>
</html>

效果如下:

绘制椭圆弧

稍后添加

绘制贝塞尔曲线

稍后添加

6. svg学习笔记-路径的更多相关文章

  1. 8. svg学习笔记-文本

    毫无疑问,文本也是svg中组成的重要部分,在svg中,用<text>元素来创建文本,文本的使用格式如下: <text x="20" y="30" ...

  2. 4. svg学习笔记-文档结构元素和样式的使用

    svg除了绘图元素之外还有一部分是专门用于文档结构的,这类元素有<g>,<use>,<defs>,<symbol>等 <g>元素 如果我们仅 ...

  3. svg学习笔记(一)

    SVG——可扩展适量图形,基于XML PC端:IE9+   wap端:表现良好,适合使用 基础图形: line(线段)  <line x1="25" y1="150 ...

  4. svg学习笔记

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. 2. svg学习笔记-svg中的坐标系统和viewbox

    我是通过<SVG精髓>这本书学习的svg,说实话,这本书写的不好,或者说翻译的不好,我没有看过这本书的原版,不知道原文写的怎么样,但是翻译出来的有些句子真的很拗口.以前老师给我们API文档 ...

  6. 3. svg学习笔记-基本形状和画笔属性

    svg中可以绘制的基本图形有线段,矩形,多边形,圆,椭圆,分别来看一下这些基本图形: 线段 使用<line>元素创建一条线段,格式如下: <line x1=" start- ...

  7. svg的基本图形与属性【小尾巴的svg学习笔记1】

    因为项目有可能用到, 所以学习了一下,做此笔记,图截自慕课网,侵删. 一.基本图形 1.矩形 x,y定义矩形的左上角坐标: width,height定义矩形的长度和宽度: rx,ry定义矩形的圆角半径 ...

  8. svg学习笔记(二)

    SMIL animation演示代码集锦 <svg width="1400" height="1600" xmlns="http://www.w ...

  9. 9. svg学习笔记-裁剪和蒙版

    裁剪 在svg中进行剪切,对整个svg元素而言,可以使用<svg>元素的viewbox属性,对于单个元素则可以使用<clipPath>元素.在单个图形元素上使用裁剪,可以在&l ...

随机推荐

  1. 让Python代码更快运行的 5 种方法

    不论什么语言,我们都需要注意性能优化问题,提高执行效率.选择了脚本语言就要忍受其速度,这句话在某种程度上说明了Python作为脚本语言的不足之处,那就是执行效率和性能不够亮.尽管Python从未如C和 ...

  2. SpringBoot(8) SpringBoot过滤器Filter

    1.SpringBoot启动默认加载的Filter characterEncodingFilter hiddenHttpMethodFilter httpPutFormContentFilter re ...

  3. Coder解压探索===冥想补蓝v.1.0

    主题是什么? 这是一篇是我自己在探索冥想术的过程中,有了一些浅薄的收获,所以写出来记录与分享. 我不太记得最早是因为什么原因去学习冥想,一开始对我而言,这个词带有很多成见,诸如“老僧入定”“三界六道” ...

  4. MySQL中间件之ProxySQL(13):ProxySQL集群

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html ProxySQL有原生的集群功能,但是这个原生的集群功能还正在试验阶段 ...

  5. Go基础系列:简单数据类型

    每一个变量都有数据类型,Go中的数据类型有: 简单数据类型:int.float.complex.bool和string 数据结构或组合(composite):struct.array.slice.ma ...

  6. zookeeper高可用集群搭建

    前提:已经在master01配置好hadoop:在各个slave节点配置好hadoop和zookeeper: (该文是将zookeeper配置在各slave节点上的,其实也可以配置在各master上, ...

  7. [转]Angular引入第三方库

    本文转自: https://blog.csdn.net/yuzhiqiang_1993/article/details/71215232 版权声明:本文为博主原创文章,转载请注明地址.如果文中有什么纰 ...

  8. 【转载】Centos系统采用NVM安装Node.js环境

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...

  9. Revit二次开发: 文件损坏

    哪些因素可能会导致损坏? 损坏的原因也各不相同,包括但不限于 无法读取/写入存储介质 程序发生崩溃(特别是在数据写入 RVT 模型时) 附加模块以通过正常 UI 无法或意外的方式修改图元 未经测试的多 ...

  10. C语言异常处理之 setjmp()和longjmp()

    异常处理之除0情况 相信大家处理除0时,都会通过函数,然后判断除数是否为0,代码如下所示: double divide(doublea,double b) { const double delta = ...