您当前的位置: 首页 > 

插件开发

暂无认证

  • 0浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SVG标准解读-几何图形-图案填充-核心要点

插件开发 发布时间:2022-04-14 13:19:13 ,浏览量:0

文章目录
    • 1.SVG概述
    • 2.svg标签
      • 2.1.视图(viewport)和单位
      • 2.2.坐标系统
      • 2.3.viewBox
    • 3.g标签
    • 4.公共属性
    • 5.几何图形
      • 5.1 绘制直线
      • 5.2 绘制矩形
      • 5.3 绘制椭圆
      • 5.4 绘制圆
      • 5.5 多边形
      • 5.6 折线
      • 5.7 路径
        • 5.7.1 M指令和L指令
        • 5.7.2 H指令和V指令
        • 5.7.3 Q指令
        • 5.7.4 C指令
        • 5.7.5 T指令
        • 5.7.6 S指令
        • 5.7.7 A指令
    • 6.defs标签
    • 7.pattern标签
    • 8.text标签
      • 8.1.文字基本
      • 8.2.tspan-文字分区
      • 8.3.textPath-文字路径
    • 9.作者答疑

1.SVG概述

SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。

2.svg标签 2.1.视图(viewport)和单位

viewport指的是SVG图像的可视区域,一个SVG图像的viewport可以无限大,但是可视区域最大只能是屏幕的分辨率,通过svg元素中的width和height属性指定viewport的大小。在svg中默认的单位为px,能够写单位,也能够不写单位。在数值的后面可以指定单位,一般单位的名称如下所示:

名称解释em默认的字体大小,通常一个字符的高度ex字符x的高度px像素pt点数,1/72英寸pcPicas,1/6英寸cm厘米mm毫秒in英寸 2.2.坐标系统

y轴右方x为正值,x轴下方y为正值。简而言之,x轴向右为正,y轴向下为正。下面展示一个svg源码,指定一个宽高为10cm的可视区域,绘制两个矩形。


DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">


    
    


在这里插入图片描述

2.3.viewBox

可以使用viewBox来指定自己的用户坐标系统。如果你指定的用户坐标系统和viewport坐标系统的宽高比相同,它将会被拉伸填充满整个viewport区域。

viewBox = "   "

min-y、min-y指定viewBox的左上顶点坐标,width和height指定viewBox的宽高,这里的四个值均不可为零或负值。通过该值和preserveAspectRatio属性的设置可以视图坐标和用户坐标的变换,想要深入了解的读者可以查阅相关资料,本文就介绍最常用的一种情况,就是viewBox和视图一致。

3.g标签

标记就是’group’的简写,是用来分组用的,它能把多个元素放在一组里,对标记实施的样式和渲染会作用到这个分组内的所有元素上。组内的所有元素都会继承标记上的所有属性。

4.公共属性

用于描述svg元素的样式显示属性,包括颜色,边框,线宽等属性。显示属性既可以在元素的属性中表达,也可以用CSS样式属性来表达。

元素属性:stroke=“red” stroke-width=“2”; css属性:style=“stroke:red;stroke-width=2”

简单样式名称和值如下表所示:

参数描述值fill填充图形颜色颜色,渐变stroke绘制图形的边框颜色颜色,渐变stroke-width绘制图形的边框宽度数值stroke-linejoin线条连接处样式miter|round|bevelstroke-linecap线条首尾处样式butt|round|squaretransform属性变换translate|scale|rotatetransform-origin变换中心数值|百分比|位置 5.几何图形

在SVG中,写在前面的元素先被渲染,写在后面的元素后被渲染。后渲染的元素会覆盖前面的元素,虽然有时候受透明度影响,看起来不是被覆盖的,但是SVG确实是严格按照先后顺序来渲染的。默认线宽为stroke-width=“1” 。

注意:SVG是以XML定义的,所以是大小写敏感的。

5.1 绘制直线

绘制一条直线,从点(x1,y1)到(x2,y2)。


  

参数是否必须描述x1否直线起点的x坐标,默认是0y1否直线起点的y坐标,默认是0x2是直线终点的x坐标y2是直线终点的y坐标style否显示样式,主要用于规定了绘制矩形的样式属性,详情参考显示属性 5.2 绘制矩形

绘制一个矩形或者圆角矩形,创建一个宽150,高100,圆角半径15的矩形。


  

参数是否必须描述x否矩形左上角的x坐标,默认是0y否矩形左上角的y坐标,默认是0rx否矩形水平方向的圆角半径,默认是0ry否矩形垂直方向的圆角半径,默认与rx相等width是矩形宽度height是矩形高度style否显示样式,主要用于规定了绘制矩形的样式属性,详情参考显示属性 5.3 绘制椭圆

绘制一个椭圆,创建一个圆心在(cx,cy),X轴半径为rx,Y轴半径为ry的椭圆。


  

参数是否必须描述cx否圆心的x坐标,默认是0cy否圆心的y坐标, 默认是0rx是圆心的X轴半径ry否圆心的Y轴半径,默认为rx的值style否显示样式,主要用于规定了绘制矩形的样式属性,详情参考显示属性 5.4 绘制圆

绘制一个圆,创建一个圆心在(cx,cy),半径为r的圆。


  

参数是否必须描述cx否圆心的x坐标,默认是0cy否圆心的y坐标, 默认是0r是圆的半径style否显示样式,主要用于规定了绘制矩形的样式属性,详情参考显示属性 5.5 多边形

绘制一个又一系列点组成的多边形。


  

参数是否必须描述points是曲线上点的坐标集合。 图形的绘制是根据points的点坐标从左向右开始,如,对于points=“x1,y1 x2,y2 x3,y3 x4,y4”;图形从(x1,y1)开始,然后连接(x2,y2),再连接(x3,y3),再连接(x4,y4),最后首尾相连(连接起点x1,y1),最终形成闭合的图形。style否显示样式,主要用于规定了绘制矩形的样式属性,详情参考显示属性 5.6 折线

绘制一个又一系列点组成的折线,与多边形的区别在于最后一点不连接起始点。


  

参数是否必须描述points是曲线上点的坐标集合。 图形的绘制是根据points的点坐标从左向右开始,如,对于points=“x1,y1 x2,y2 x3,y3 x4,y4”;图形从(x1,y1)开始,然后连接(x2,y2),再连接(x3,y3),再连接(x4,y4)。style否显示样式,主要用于规定了绘制矩形的样式属性,详情参考显示属性 5.7 路径

绘制复杂的多边形,一些列复杂的点组成的轨迹路径。

参数是否必须描述d是绘制路径的指令以及参数。style否显示样式,主要用于规定了绘制矩形的样式属性,详情参考显示属性。

d参数:大写的指令代表了绝对定位(以画布左上角为0点),而小写则代表相对定位(以上一个点为0点);

指令参数描述Mx y将当前的起始位置移动到x, yLx y将路径当前结束位置与x, y相连接Hx将路径当前结束位置与x, 当前位置y相连接Vy将路径当前结束位置与当前位置y, x相连接Qcx cy px py由一个控制点C与结束点P来控制二次贝塞尔曲线的绘制Ccx1 cy1 cx2 cy2 px py由两个控制点C1,C2和结束点来控制三次贝塞尔曲线的绘制Tx y由一个控制点(默认是上一个锚点的镜像),和结束点来绘制光滑的二次贝塞尔曲线Scx1 cy1 px py由两个控制点(默认是上一个锚点的镜像)和C1以及一个结束点P来绘制光滑的三次贝塞尔曲线Arx ry xa lf sf ex ey由七个参数控制,详情看A指令Z无结束绘制并连接起点 5.7.1 M指令和L指令

M指令表示起始点,L指令表示下一个点。绘制一条路径从(20,90),经过(100,100)和(190,20)。如下所示:


  

5.7.2 H指令和V指令

H指令:连接到水平线上的某个点。V指令:连接到垂直线上的某个点。绘制一条路径从(20,90),X轴坐标转到40,然后Y轴坐标转到120。如下所示:


  

5.7.3 Q指令

绘制一条二次贝塞尔曲线,二次贝塞尔曲线由一个起点、一个控制点和一个结束点来控制。M表明起始点,Q表明控制点和结束点。


  

5.7.4 C指令

绘制一条三次贝塞尔曲线,三次贝塞尔曲线由一个起点、两个控制点和一个结束点来控制。


  

5.7.5 T指令

T指令是用于创建平滑的二次贝塞尔曲线,T指令只需规定结束点的位置,其控制点的位置应为其上一个控制点关于该结束点对称点,如果上一个控制点不存在,则最后一个锚点的位置即为控制点的位置


  

5.7.6 S指令

创建平滑的三次贝塞尔曲线,S指令需规定一个控制点和一个结束点,与T指令类似,其第一个控制点的位置应为其上一个控制点关于该结束点的对称点,如果上一个控制点不存在,则最后一个锚点的位置即为第一个控制点的位置;第二个控制点由S指令来规定。


  

5.7.7 A指令

A指令用于绘制一段弧线,弧线实际是一个取自椭圆上两个点之间的弧,第一个点是路径最后一个锚点,第二个是结束点,弧线的细节由几个主要的参数控制。

语法: rx ry xa lf sf ex ey


  

参数描述rx椭圆长轴半径ry椭圆短轴半径xa椭圆与x轴的夹角lf所取的弧大小,1取大弧,0取小弧sf绘制弧线的方向,1顺时针绘制,0逆时针绘制ex结束点的x坐标ey结束点的y坐标 6.defs标签

元素用于嵌入可在SVG映像内重用的定义。

7.pattern标签

使用预定义的图形对一个对象进行填充或描边,就要用到pattern元素。pattern元素让预定义图形能够以固定间隔在x轴和y轴上重复(或平铺)从而覆盖要涂色的区域。先使用pattern元素定义图案,然后在给定的图形元素上用属性fill或属性stroke引用用来填充或描边的图案。


  
          
      18
    
  
  

名称描述patternUnits用来定义图案效果区域的单位。 它为模式内的各种长度值以及定义模式子区域的属性指定坐标系。 如果patternUnits =“userSpaceOnUse”,则值表示使用’pattern’元素时当前用户坐标系中的值。 如果patternUnits =“objectBoundingBox”,则值表示在使用’pattern’元素时就地引用元素上的边界框的分数或百分比的值。 默认是objectBoundingBox。patternContentUnits用来定义模式内容区域的单位。 它为模式内的各种长度值以及定义模式子区域的属性指定坐标系。 如果patternContentUnits =“userSpaceOnUse”,则值表示使用’pattern’元素时当前用户坐标系中的值。 如果patternContentUnits =“objectBoundingBox”,则值表示在使用’pattern’元素时就地引用元素上的边界框的分数或百分比值。 默认是userSpaceOnUse。x图案边界框的x轴坐标。 缺省值是0。相当于图案整体平移,在userSpaceOnUse下有效。y图案边界框的y轴坐标。 缺省值是0。相当于图案整体平移,在userSpaceOnUse下有效。width图案边界框的宽度。 缺省值是0。height图案边界框的高度。 默认是0。preserveAspectRatio以保留原始内容的宽高比。xlink:href用于指另一种模式。

userSpaceOnUse:x、y、width和height表示的值都是当前用户坐标系统的值。也就是说,这些值没有缩放,都是绝对值。比如:将pattern中width、height设为80、60时,相当于width、height为0.2。 objectBoundingBox(默认值):x、y、width和height的值都是占外框(包裹pattern的元素)的百分比。比如上面的例子中:将pattern中width、height设为1时,相当于pattern内的图案占rect的百分百,上面实例设置为0.2,相当于占rect的20%。

8.text标签 8.1.文字基本

(x,y)用于指定文字起始位置。准确的说,x指定文字最左侧坐标位置,y指定文字baseline所处y轴位置。 fill的默认为black,stroke默认为none。如果设置了stroke,字的边缘会再“描一层边”。如果设置了stroke并将fill设为none,呈现为空心字。css中影响字体样式的属性同样可以作用在 上:font-size, font-weight, font-family, font-style, font-decoration, word-spacing, letter-spacing。



    


    First Line
    Second Line
    Third Line


在这里插入图片描述

8.2.tspan-文字分区

让部分文字呈现出不同的样式。 允许被嵌入在 内部来实现。同时还有两个属性dx,dy针对上一个tspan的偏移,(x,y)是将 内的文字定位到其坐标系的(x,y)位置。



    


    first line
        second line
        third line
    


在这里插入图片描述

8.3.textPath-文字路径

内嵌于 中的元素,通过xlink:href属性指向一个 元素,可以将其内部字符的baseline设置成指定的path。



    


    
        Text following a circle.............
    

如下图所示: 在这里插入图片描述

9.作者答疑

  如有疑问,请留言。

关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0458s