深度掌握SVG路径path的贝塞尔曲线指令

SVG路径path中的贝塞尔曲线指令是一种用于绘制平滑曲线的方法,它通过控制点和切线方向来定义曲线的形状。在SVG中,贝塞尔曲线指令包括以下几个:

  1. M:移动到指定的点。这个指令后面需要跟上两个参数,分别表示x和y坐标。例如:M 50,50

  2. L:从当前点画一条直线到指定的点。这个指令后面需要跟上两个参数,分别表示x和y坐标。例如:L 100,100

  3. C:画一个贝塞尔曲线。这个指令后面需要跟上多个参数,包括控制点的坐标、控制点的切线方向等。例如:C 50,100 100,50 150,50

  4. Q:画一个二次贝塞尔曲线。这个指令后面需要跟上两个参数,分别表示两个控制点的坐标。例如:Q 50,100 150,100

  5. A:画一个三次贝塞尔曲线。这个指令后面需要跟上多个参数,包括控制点、锚点、方向等。例如:A 50,100 100,50 150,50 0,1 1,1

  6. Z:闭合路径。这个指令没有参数,表示将当前的路径闭合。

  7. HVST:这些指令用于描述贝塞尔曲线的控制点和切线方向。例如:C 50,100 H 150 V 200 S 250 T 300

  8. R:使用相对坐标进行绘制。这个指令后面需要跟上一个参数,表示相对于当前点的偏移量。例如:R 20,20

  9. r:使用小数形式表示坐标值。这个指令后面需要跟上一个参数,表示是否使用小数形式表示坐标值。例如:r 1.5

下面详细介绍一下这些指令的使用方法和注意事项。

一、移动到指定点(M)

移动到指定点指令是SVG路径中最基本的指令之一,它的作用是将绘图的起始点移动到坐标位置上。该指令后面需要跟上两个参数,分别表示x和y坐标。例如:

html 复制代码
<path d="M 50,50 L 100,100" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)到(100,100)的直线路径。需要注意的是,如果只给出一个参数,那么第二个参数默认为第一个参数的值,即移动到同一个点上。例如:

html 复制代码
<path d="M 50" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)到(50,50)的直线路径,因为第二个参数默认为第一个参数的值。

二、从当前点画一条直线到指定点(L)

从当前点画一条直线到指定点指令也是SVG路径中最基本的指令之一,它的作用是从当前点开始画一条直线到指定的坐标位置上。该指令后面需要跟上两个参数,分别表示x和y坐标。例如:

html 复制代码
<path d="M 50,50 L 100,100" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)到(10,100)的直线路径。需要注意的是,如果只给出一个参数,那么第二个参数默认为第一个参数的值,即画到同一个点上。例如:

html 复制代码
<path d="M 50 L 150" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)到(150,150)的直线路径,因为第二个参数默认为第一个参数的值。

三、画一个贝塞尔曲线(C)

画一个贝塞尔曲线指令是SVG路径中最常用的指令之一,它的作用是通过控制点和切线方向来绘制平滑曲线。该指令后面需要跟上多个参数,包括控制点的坐标、控制点的切线方向等。例如:

html 复制代码
<path d="M 50,50 C 100,100 150,50" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)开始,经过(100,100)和(150,50)的平滑曲线路径。需要注意的是,控制点的数量可以是任意个,但是最少需要两个控制点才能绘制一条曲线。

在贝塞尔曲线指令中,控制点的坐标可以使用绝对坐标或相对坐标表示。如果使用绝对坐标表示,那么每个控制点的坐标都需要用逗号分隔开,例如:

html 复制代码
<path d="M 50,50 C 100,100 200,-50" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)开始,经过(100,100)和(200,-50)的平滑曲线路径。

如果使用相对坐标表示,那么需要在控制点的坐标前加上一个符号+-,表示相对于上一个控制点的偏移量。例如:

html 复制代码
<path d="M 50,50 C +100,-100 -50,200" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)开始,经过(60,40),(35,-150)和(-25,250)的平滑曲线路径。

除了控制点的坐标外,贝塞尔曲线指令还可以包含其他参数来描述曲线的形状和方向。这些参数包括:

  1. HVST:这些指令用于描述贝塞尔曲线的控制点和切线方向。其中,H表示水平方向的控制点,V表示垂直方向的控制点,S表示控制点与上一个控制点的斜率,T表示控制点与上一个控制点的切线方向。例如:
html 复制代码
<path d="M 50,50 C 100,100 H 200 V 300 S -3 3 T 4 4" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)开始,经过(12,3),然后水平方向控制点(100,100),垂直方向控制点(200,300),最后控制点与上一个控制点的切线方向为(4,4)的平滑曲线路径。

四、闭合路径(Z)

闭合路径指令是SVG路径中的一种特殊指令,它的作用是将当前的路径闭合起来。该指令后面不需要参数。例如:

html 复制代码
<path d="M 50,50 L 100,100 Z" fill="none" stroke="black"/>

上面的代码将绘制一条从(50,50)到(100,100)的直线路径,然后将这条路径闭合起来,形成一个封闭的图形。需要注意的是,如果路径没有闭合,那么在绘制时可能会出现一些问题,比如无法正确显示路径的形状等。因此,在使用路径时,建议尽量保证路径能够被正确闭合。

相关推荐
爱上妖精的尾巴3 分钟前
7-11 WPS JS宏 对象的属性值为函数的写法与用法
前端·javascript·wps·js宏·jsa
zuozewei4 分钟前
零基础 | 使用LangChain框架实现ReAct Agent
前端·react.js·langchain
坠入暮云间x4 分钟前
React Native for OpenHarmony开发环境搭建指南(一)
前端·react native·开源
爱上妖精的尾巴7 分钟前
7-12 WPS JS宏 this、return用构造函数自定义类-1:对象内部函数,外部调用的写法
前端·javascript·wps·js宏·jsa
har01d12 分钟前
AI生成的 vue3 日历组件,显示农历与节日,日期可选择,年月可切换
前端·vue.js·节日
冲刺逆向19 分钟前
【js逆向案例六】创宇盾(加速乐)通杀模版
java·前端·javascript
我穿棉裤了20 分钟前
文字换行自动添加换行符“-”
前端·javascript·vue.js
six+seven25 分钟前
Node.js内置模块fs
前端·node.js
少莫千华26 分钟前
【HTML】CSS绘制奥运五环
前端·css·html
沛沛老爹26 分钟前
Web开发者转型AI安全核心:Agent Skills沙盒环境与威胁缓解实战
java·前端·人工智能·安全·rag·web转型升级