路径相比于多边形<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. [转]php 图片验证码生成 前后台验证

    本文转自:https://www.cnblogs.com/xiaoyezi/p/3541195.html 自己从前一段时间做了个php小项目,关于生成图片验证码生成和后台的验证,把自己用到的东西总结一 ...

  2. PHP 科学计数 转 Double

    本文转自:https://stackoverflow.com/questions/4576927/convert-a-string-containing-a-number-in-scientific- ...

  3. @Html.xxxxxFor() 规范写法

    @Html.TextBoxFor() 讲解(其他类似的 @Html.LabelFor 等)同理 @Html.TextBoxFor(model => model.SearchParams.Name ...

  4. WCF SqlParameter序列化问题解决方案

    博文 http://www.cnblogs.com/pan11jing/archive/2011/08/19/2051827.html 通过自定义类,再在WCF端转换的方式解决问题,之后出现了一个很小 ...

  5. 从零开始学安全(二十三)●用PHP编写留言板

    <?php include("test.php"); ?> <!DOCTYPE html> <html> <head> <me ...

  6. 在Prism 框架中,实现主程序与模块间 UI 的通信

    背景: 在模块的UI中包含 TreeView 控件,在该树形控件的每一节点前面定义了一个复选框,如图 需求: 在两个不同的应用程序中使用该控件,而它在不同应用程序中的外观则并不一致,按照本例,即一个显 ...

  7. WarShall算法

    1.引言 图的连通性问题是图论研究的重要问题之一,在实际中有着广泛的应用.例如在通信网络的联通问题中,运输路线的规划问题等等都涉及图的连通性.因此传递闭包的计算需要一个高效率的算法,一个著名的算法就是 ...

  8. SpringBoot数据库集成-Mybatis

    一.java web开发环境搭建 网上有很多教程,参考教程:http://www.cnblogs.com/Leo_wl/p/4752875.html 二.Spring boot搭建 1.Intelli ...

  9. myeclipse无法部署项目的解决

    一.问题 myeclipse无法部署项目,点击这个部署按钮没有反应. 二.解决办法 1.找到myeclipse的工作空间,也就是启动时的那个项目保存的空间,我的是在D:\myeclipse_works ...

  10. linux下ftp服务器搭建

    1.yum install vsftpd  使用yum安装ftp 2.创建并授权ftp文件目录   mkdir -P /ftp/ftpadmin       chmod -R 777 /ftp/ftp ...