SVG Path高级教程

课程分为四个方面:

1. Path概述

2. 移动和直线命令

3. 弧线命令

4. 贝塞尔曲线命令

Path概述

<path> 标签用来定义路径,Path字符串是由命令及其参数组组成的字符串,是非常强大的绘图工具。

例如:

<path  d="M0,0L10,20C30-10,40,20,100,100"  stroke="red">

命令汇总

命令 含义
M/m (x,y) 移动当前位置
L/l (x,y) 从当前位置绘制线段到指定位置
H/h (x) 从当前位置绘制水平线到达指定的 x 坐标
V/v (y) 从当前位置绘制竖直线到达指定的 y 坐标
Z/z  闭合当前路径
C/c (x1,y1,x2,y2,x,y) 从当前位置绘制三次贝塞尔曲线到指定位置
S/s (x2,y2,x,y) 从当前位置光滑绘制三次贝塞尔曲线到指定位置
Q/q (x1,y1,x,y) 从当前位置绘制二次贝塞尔曲线到指定位置
T/t (x,y) 从当前位置光滑绘制二次贝塞尔曲线到指定位置
A/a (rx,ry,xr,laf,sf,x,y) 从当前位置绘制弧线到指定位置

命令基本规律

1. 参数之间可以用空格或逗号隔开,如果下一个数值是负数,才可以省略。

2. 区分大小写:大写表示坐标参数为绝对位置,小写则为相对位置 。

3. 最后的参数表示最终要到达的位置 。

4. 上一个命令结束的位置就是下一个命令开始的位置 。

5. 命令可以重复参数表示重复执行同一条命令。

移动和直线命令

M  (x,  y): 移动画笔,后面如果有重复参数,会当做是  L  命令处理 。

L  (x,  y):  绘制直线到指定位置 。

H  (x): 绘制水平线到指定的  x  位置 。

V  (y): 绘制竖直线到指定的  y  位置 。

m、l、h、v  使用相对位置绘制。

PS:绝对位置是相对原始坐标系来讲的,相对位置是相对于上一个命名的结束位置。

例子:

<path d="M40,40L100,100H200V300" stroke="red" fill="none"/>
<path d="M40,40l60,60h100v200" stroke="red" fill="none"/>

这两条路径的效果是一样的:

PS:这里看到1width的斜线,也就是最前面那一段,它的宽度看起来要细一些。

弧线命令

弧线命令是用A  (rx,  ry,  xr,  laf,  sf,  x,  y) 绘制,这里弧线也就是某一个圆弧的一段。

参数

参数 描述 取值
rx (radius-x)弧线所在椭圆的  x  半轴长   
ry (radius-y)弧线所在椭圆的  y  半轴长   
xr  (xAxis-rotation)弧线所在椭圆的长轴角度   
laf (large-arc-flag)是否选择弧长较长的那一段弧  1 为大弧

0 为小弧

sf (sweep-flag)是否选择逆时针方向的那一段弧  1 为顺时针

0 为逆时针

x,  y 弧的终点位置   

laf、sf取值效果:

例子:

<path d="M40,40A100 50 0 0 0 100 100" stroke="red" fill="none"/>

效果:

贝塞尔曲线 

在大学时候,接触贝塞尔曲线是在图形学的课程,不过由于比较久远,数学的概念记不清了。(哈哈哈哈)

贝塞尔曲线概念

Bézier curve(贝塞尔曲线)是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、终止点、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化。

数学上的计算公式,B(t)为t时间下点的坐标,P0为起点, Pn为终点,Pi为控制点。

一次贝塞尔曲线(线段):

二次贝塞尔曲线(抛物线):

三次贝塞尔曲线:

高次贝塞尔曲线(通项公式):

PS:计算公式可以让我们直接算出一条贝塞尔曲线。

网上有很多资料介绍贝塞尔曲线是通过下面动图的,当然是基于上面的数学公式,例如下面的三次贝塞尔曲线。

四条贝塞尔曲线命令

SVG中,只能绘制二次和三次贝塞尔曲线。

C/c (x1,y1,x2,y2,x,y)
从当前位置绘制三次贝塞尔曲线到指定位置

x1,y1,x2,y2是控制点

x,y是终止点

Q/q (x1,y1,x,y)
从当前位置绘制二次贝塞尔曲线到指定位置

x1,y1是控制点

x,y是终止点

例子:

<path d="M200,400Q300 250 400 400" stroke="red" fill="none"/>
<path d="M200,200C250 100 400 100 400 200" stroke="red" fill="none"/>

效果:

T和S命令中的控制点是来自上一段曲线控制点的镜像位置作为一个控制点。

T: 上一段曲线的控制点关于当前曲线起始点的镜像位置形成当前曲线的控制点。 (这里说的都是二次贝塞尔曲线)

S: 上一段曲线的第二个控制点关于当前曲线起始点的镜像位置形成当前曲线的第一个控制点。

好处:

1. 可以简化写法,少写一个点。

2. 两条曲线形成的曲线是光滑曲线。(当曲线上每一点处都具有切线,且切线随切点的移动而连续转动,这样的曲线成为光滑曲线)

例子:

<path d="M100,200C100,100 250,100 250,200S400,300 400,200" stroke="red" fill="none"/>
<path d="M100,400Q150,300 250,400 T400,400" stroke="red" fill="none"/> 

效果:

参考视频

1. SVG课程(慕课网)

参考文献

1. http://www.cnblogs.com/jay-dong/archive/2012/09/26/2704188.html

2. http://www.zhangxinxu.com/wordpress/2014/06/deep-understand-svg-path-bezier-curves-command/

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/5982900.html

时间: 2024-10-18 19:38:36

SVG Path高级教程的相关文章

ios cocopods 安装使用及高级教程

CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods.http://cocoapods.org/ 一.安装 1.更新gem 如果终端gem版本太老可能会有问题,先更新gem:(现在大部分新机都不会有这个问题) sudo gem update --system 2.换源 gem默认的源是外国的https://rubygems

HTML高级教程(7)——HTML URL(统一资源定位器)

HTML链接 当你单击 HTML 文档中的某个链接时,就像这个:最后一页,其中的 <a> 标签就会使用类似这样的 href 属性值指向一个网络上的地址:<a href="lastpage.htm">Last Page</a> 在这个例子中,Last Page 的链接地址是相对于你所浏览的网站而言的,你的浏览器会自动构建一个完整的网址来访问这个页面,比如 http://www.w3school.com.cn/html/lastpage.html. UR

千锋《Java高级教程+分布式+springcloud+微信支付》

课程目录:├─千锋Java高级教程-cas单点登录(完结-8集)│      01单点登录介绍│      02cas介绍│      03tomcat搭建https│      04cas server搭建│      05Cas 配置 jdbc 连接数据库│      06Cas 密码 MD5值│      07 Cas 整合shiro1│      07 Cas 整合shiro2│      ├─千锋Java高级教程-dubbo+zookeeper分布式系统架构基础(11集)│      

[转帖]tar高级教程:增量备份、定时备份、网络备份

tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ?浏览 27,065 次 61条评论 一.概述 备份与恢复对于系统维护而言是至关重要的事情.不合理的备份与还原会让你的数据面临丢失的风险.许多用户都在丢失重要数据后才意识到这种风险.而要从这种情况恢复数据将是非常耗时并且困难的.所以我们应该从别人的错误中吸取教训,并确保你的系统处于保护中.先考虑一些问题: 何时进行备份? 如果你可以接受一个星

计算机网络高级教程考点个人总结

计算机网络高级教程 选择题 50~60分 论述题:40~50分 个人总结仅供参考 论述题范围 1.  google公司,IBM公司.微软公司.苹果公司.华为公司.百度公司的技术发展方向. 2.5G的特点及其产业应用. 3.智慧城市的应用探索. 4.机器人技术与应用探索. Google公司市值6819.40亿美元,IBM市值1450亿美元,苹果8000亿美元,微软5400亿美元,阿里3632.63亿美元,腾讯3462亿美元,京东600亿美元,百度600亿美元,华为没有上市,没有市值. 选择题范围

下载快速上手数据挖掘之solr搜索引擎高级教程(Solr集群、KI分词、项目实战)

Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎. 快速上手数据挖掘之solr搜索引擎高级教程(Solr集群.KI分词.项目实战),刚刚入手,转一注册文件,视频的确不错,可以先下载看看:http://pan.baidu.com/s/1jIdgtWM 密码:s1t3

Base64 URL image CSS &amp; 在线base64 加密/解密 link: $ svg path 线宽:stroke-width

Base64 URL image CSSData URI scheme是在RFC2397中定义的svg path 线宽:stroke-width 在线base64 加密/解密 link: 那么这是什么呢?这是Data URI scheme. Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入.比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并转到,就能看到它了,一张1X36的白灰png图片. 在上面的D

Net并行编程高级教程--Parallel

Net并行编程高级教程--Parallel 一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机还是生物都并发处理着各种事物.人真是奇怪,当你关注一个事情的时候,你会发现周围的事物中就常出现那个事情.所以好奇心驱使下学习并发.便有了此文. 一.理解硬件线程和软件线程 多核处理器带有一个以上的物理内核--物理内核是真正的独立处理单元,多个物理内核使得多条指令能够

二、个人总结的菜鸟教程|sql教程的知识点(SQL高级教程)

二.SQL高级教程 1.SQL SELECT TOP SELECT TOP 子句用于规定要返回的记录的数目. SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的. 注释:并非所有的数据库系统都支持 SELECT TOP 子句. sql server|ms access语法 select top number|percent column_name from table_name; mysql|oracle语法(与top等价) select Column_name from t