`
天梯梦
  • 浏览: 13747222 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

SVG矢量绘图 path路径详解(基本画法)

 
阅读更多

SVG的形状标签里,path是最强大的一个,掌握了path就足够处理常见的绘图问题了。
先看一下path标签的基本用法:

<path d="M100,100 L200,200 L200,400" fill="#333" stroke="#000" />

 

path标签通过属性d来定义路径,定义信息由一段字符串构成,另外path也可以通过fill和stroke属性来定义填充和边框。


d属性的信息其实并不复杂,由字母和数字构成,数字表示坐标点,字母负责表示如何连接这些坐标点。比如上面的示例中,M表示起点,L表示直线连接,所以d的信息可以这样解读:

 

M100,100    ->    以(100,100)坐标点为起点
L200,200    ->    从(100,100)向(200,200)画一条直线
L200,400    ->    从(200,200)向(200,400)画一条直线

 

在path标签的d属性中,一共有10个命令可以使用,下面5个命令是基础,比较简单。

M     移动到(moveTo)    x,y    开始点坐标
Z    闭合路径(closepath)    将路径的开始和结束点用直线连接
L    直线(lineTo)    x,y    当前节点到指定(x,y)节点,直线连接
H    水平直线    x    保持当前点的y坐标不变,x轴移动到x,形成水平线
V    垂直直线    y    保持当前点的x坐标不变,y轴移动到y,形成垂直线

标准的指令字母是10个,外加1个非标准的,这个可以参见我翻译构建的Snap.svg项目Paper.path()页面中的表格:

 

命令 名称 参数
M moveto  移动到 (x y)+
Z closepath  关闭路径 (none)
L lineto  画线到 (x y)+
H horizontal lineto  水平线到 x+
V vertical lineto  垂直线到 y+
C curveto  三次贝塞尔曲线到 (x1 y1 x2 y2 x y)+
S smooth curveto  光滑三次贝塞尔曲线到 (x2 y2 x y)+
Q quadratic Bézier curveto  二次贝塞尔曲线到 (x1 y1 x y)+
T smooth quadratic Bézier curveto  光滑二次贝塞尔曲线到 (x y)+
A elliptical arc  椭圆弧 (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
R Catmull-Rom curveto*  Catmull-Rom曲线 x1 y1 (x y)+

其中,Catmull-Rom曲线不是标准的SVG命令,我们这里不予以讨论!

如果指令字母是大写的,例如M, 则表示坐标位置是绝对位置;如果指令字母小写的,例如m, 则表示坐标位置是相对位置。//zxx: 本文全部使用大写字母做演示和说明。

 

其中,有5个指定属于基本指令,你也可以理解为“好理解好上手好记忆”的指令,见下表:

指令字母(绝对坐标) 中文含义 参数示意 具体说明
M 移动到(moveTo) x,y 路径起始点坐标
Z 闭合路径(closepath)   将路径的开始和结束点用直线连接
L 直线(lineTo) x,y 当前节点到指定(x,y)节点,直线连接
H 水平直线 x 保持当前点的y坐标不变,x轴移动到x, 形成水平线
V 垂直直线 y 保持当前点的x坐标不变,y轴移动到y, 形成垂直线

除了这5个参数少、直来直往的指令,剩下的,除了弧形命令A(Arcs),就都是与贝塞尔曲线相关的命令了。

 

M和L

再看一个M和L的例子

<path d="M30,30 L170,30 L30,170 L170,170"></path>

 

Snip20150708_1

从A点(30,30)开始,直线画向B点(170,30),再直线到C点(30,170),再直线到D点(170,170),最终形成了Z型的路径。

 

填充效果,以及Z

<path d="M30,30 L170,30 L30,170 L170,170 M170,90 L190,90 L190,110 L170,110Z" fill="yellow"></path>

 

Snip20150708_2

这段路径描述中有两个M,所以就在一个path中,出现了两个相对独立的路径,第一个路径和上面的例子一样,是Z字型。


第二个路径则是一个矩形,描述中出现了Z命令,表示将这段路径的开头和结尾连接起来。
另外,这里我们给路径定义了fill属性,可以看到,无论路径是否闭合,fill都会生效。

 

H和V

最后看一下H和V两个命令,实际上就是在x或y轴不变时,L命令的简写,所以下面两端描述,画出的图是一样的。

<path d="M30,30 L170,30 L30,170 L170,170 M170,90 L190,90 L190,110 L170,110Z" fill="yellow"></path>
<path d="M30,30 H170    L30,170 H170     M170,90 H190    V110     H170Z" fill="yellow"></path>

 

Snip20150708_3

 

 

原文:http://xbingoz.com/171.html

转自:SVG矢量绘图 path路径详解(基本画法)

 

 

分享到:
评论

相关推荐

    svgpath:SVG路径低级转换工具包

    svgpath 用于SVG路径转换的低级工具包。 有时您不能使用transform属性,而必须直接将更改应用于svg路径。 那么这个包是给你的:)! 注意:此软件包适用于字符串,而不适用于完整的svg xml源。 安装 npm install svg...

    svg.path:SVG路径对象和解析器

    svg.path svg.path是在SVG中实现不同路径命令的对象的集合,以及SVG路径定义的解析器。用法有四个路径段对象,即Line , Arc , CubicBezier和QuadraticBezier还有一个Path对象,该对象充当路径段对象的集合。 这些...

    echarts svg矢量图整理合集.txt

    echarts svg矢量图整理合集,包括五角星、梯形、微信、相机、文件夹、喇叭、放大、缩小、饼图、柱图等等

    SVG矢量动画

    5. **Path Data操纵**:通过对SVG路径数据的动态修改,可以创建路径跟随、路径变形等动画效果。 6. **SVG Viewbox和PreserveAspectRatio属性**:这两个属性可以用来控制SVG元素在不同尺寸下的显示方式,也可以在...

    基于SVG矢量图形格式浏览器绘图工具的设计与实现

    为解决这一问题,本文提出并实现了一种基于SVG矢量图形格式的浏览器绘图工具。SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,具有可缩放、易于编辑、文件体积小等优点,适合在浏览器中使用。 SVG...

    svg显示path路径,最小demo数字0路径

    svg显示path路径,最小demo数字0路径

    SVG支持用<path> 标签用来定义图形的路径。本文将详细介绍SVG Path语法结构,并附图及SVG path实例以更直观的方式让你掌握SVG路径的运用

    本文将深入探讨SVG Path的语法结构,通过实例来帮助你理解并掌握如何使用`&lt;path&gt;`标签来定义图形的路径。 SVG Path的基本语法由一系列的命令和参数组成,这些命令指示了图形应该如何被绘制。每个命令都以大写字母...

    C#下处理生成svg矢量图的类库,功能超全

    C#下处理生成svg矢量图的类库,功能超全。SharpVectorGraphics.0.4.alpha版本。

    2020年深圳地图SVG矢量图.zip

    《2020年深圳地图SVG矢量图》是一个压缩包文件,包含了深圳市2020年的最新区划信息。SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它允许用户以数学方式定义图形,因此无论放大多少倍,图像都能...

    SVG矢量图技术简介

    SVG(Scalable Vector Graphics)是一种开放标准的矢量图形描述语言,由W3C(万维网联盟)制定,特别适用于网络环境。它基于XML(eXtensible Markup Language),使得图像数据可以用文本形式存储,便于编辑、搜索和...

    svg-path-converter:SVG到JS的路径转换器

    svg-path-converter NPM模块,用于将svgs转换为单路径。 这对于图标和其他单色SVG很有用。 当前不支持&lt;text&gt; 。 基于初始代码。安装npm install --save svg-path-converter更新版本1.0.12 修复了当使用精度&gt; 0时与...

    svg-path-reverse:这是“ something”转换器JavaScript SVG路径,将路径转换为可挂钩的图形指令以进行任意转换

    SVG路径反转库这是一个简单的SVG路径逆转库,具有非常简单的API。安装使用npm安装: $&gt; npm install svg-path-reverse使用图书馆这是一个通用库,您可以通过require.js,UMD,commonjs,浏览器等方式加载它,不管它...

    glide加载和下载svg矢量图片

    - 层次结构:SVG支持图层和路径,方便进行复杂图形编辑。 - 动画支持:SVG可以用于创建动画,提供丰富的视觉效果。 2. Glide集成SVG支持: - 由于Glide原生不支持SVG,我们需要借助第三方库如`androidsvg`或`...

    将SVG矢量图显示在Qt的QGraphicsView视图框架上

    将SVG矢量图显示在Qt的QGraphicsView视图框架上,具有通过QDomDocument、QDomElement、QDomNode、QDomNameNodeMap等对象来解析svg并修改svg来实现矢量图的部分内容缩放,部分内容不缩放的功能。

    3D旋转+SVG路径动画特效.rar

    SVG(可缩放矢量图形)是一种用于绘制图形的XML格式,支持清晰的文本和图像,且无损缩放,非常适合用于创建动态路径动画。 在实际应用中,3D旋转特效通常通过CSS3的`transform`属性来实现,它可以改变元素的位置、...

    convertPath:将svg形状元素转换为路径svg元素的节点库

    将svg形状元素转换为路径svg元素的节点库。 安装 npm install convertpath 它能做什么 convertpath具有基于插件的体系结构,因此几乎每个优化都是一个单独的插件。 今天我们有: 插入 描述 将defs和symbol元素...

    path_C#_svg_pathData_

    在SVG(可缩放矢量图形)中,`&lt;path&gt;`元素是用于创建复杂形状的基础,它可以描绘出各种线条、曲线和路径。`pathData`是`&lt;path&gt;`元素的一个关键属性,它定义了路径的具体形状。这个属性通常包含一系列的指令和坐标,...

    js+html5 svg创建点路径生成器工具代码.zip

    使用这个工具,开发者可以快速生成自定义的SVG路径,这对于创建个性化图形、动画或者复杂的矢量图像是非常有用的。对于有经验的前端开发者,这个代码库也可以作为一个学习和扩展的基础,通过二次修改,可以实现更多...

    svg-path-editor:在线编辑器,用于创建和操作SVG路径

    SvgPathEditor在浏览器中编辑或创建SVG路径: : 如何使用基本的:在路径字段中粘贴或编辑原始路径单击+将新命令添加到路径,选择类型,然后单击目标通过拖放移动点单击一个点,然后在...按钮上,在选定的命令之后...

    svg path.zip

    在本压缩包"svg path.zip"中,你将找到全国地图以及北京、天津两个城市的SVG路径资源。 SVG路径是SVG元素中的一种,用来绘制复杂的图形。它的主要属性是"data",其中包含了一系列指令和坐标,这些指令和坐标共同...

Global site tag (gtag.js) - Google Analytics