SVG精髓阅读笔记

SVG,是一种可缩放矢量图形,一种XML应用.可以以一种简洁,可移植的形式表示图形信息.

计算机中描述图形信息的二大系统是栅格图形和矢量图形,在栅格图形系统中,图像被表示为图片元素或者像素的长方形数组,每个像素用其RGB颜色值或者颜色表内的索引表示,这一系列像素也称为位图.

在矢量图形系统中,图像被描述为一系列几何形状,矢量图形阅读器接受在指定坐标集上绘制形状的指令,而不是接受一系列已经计算好的像素.有人把矢量图形描述为一组绘图指令,而位图则是在特定的位置填充颜色的点.

矢量图形的用途:1:计算机辅助绘图,CAD,可以精确地测量和放大绘图以便查看细节非常重要,2:设计用于高分辨率打印图形的程序,

SVG的特点:可缩放,不失真,无锯齿,或锯齿不明显.

SVG文档:

<?xmlversion="1.0"?>

<!DOCTYPE svgPUBLIC "-//W3C//DTD SVG 1.1//EN"

 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svgwidth="500" height="500" version="1.1"

    xmlns="http://www.w3.org/2000/svg"

    xmlns:xlink="http://www.w3.org/1999/xlink">

</svg>

根元素svg可以用width和height二个属性定义svg的像素宽和像素高的

SVG的一些基本元素和用法,

SVG的坐标原点在左上角(0,0)

元素circel可以画圆相关图形, 指定中心点的x坐标和y坐标以及半径,如<circle cx=”10” cy=”10” r=”50” style=”stroke:black;fill:none”/>可以作为单独属性写出来如: <circle cx=”10” cy=”10” r=”50” stroke=”black”fill=”none”/>

<line/> 用于划线  x1 y1 x2 y2

<g></g>分组 指定一个id 以便后续复用

<use/> 变换复制组

<polyline/> 折线

<text></text>文本元素

<rect/> 矩形

在网页中使用SVG

SVG作为图像,作为图像,作为CSS背景,作为对象,内联SVG

SVG的坐标系统

视口,文档使用的画布区域称为视口,单位可以em,默认字体大小,ex 字母x的高度,px像素,pt点pc12点cm厘米,mm毫米,in英寸可混用,没有单位默认为像素

默认坐标是水平坐标向右递增,垂直坐标垂直向下递增

元素svg上的属性viewBox属性,有四个值,分表代表想要叠加在视口上的用户坐标系统的最小x坐标,最小y坐标,宽度和高度

下面一行代码是在4厘米*5厘米的图纸上,设置每厘米16个单位的坐标系统

<svg width=”4cm”height=”5cm” viewBox=”0 0 64 80”></svg>

属性viewBox的宽高比可以不同于视口的宽高比,在这种情况下SVG可以做三件事

1:按较小的尺寸等比例缩放图形,以使图形完全填充视口,

2:按较大的尺寸等比例缩放图形并裁剪掉超出视口的部分

3:拉伸和挤压绘图以使其恰好填充新的视口

属相preserveAspectRatio允许我们指定被缩放的图形相对于视口的对齐方式,以及是希望它适配边缘还是要裁剪,

PreserveAspectRatio=”alignment[meet | slice]”

其中alignment指定轴和位置, x,y Min Mid Max

Meet参数适配viewBox视口

参数slice会裁剪图形不适合视口的部分,

如果使用none参数,图像不会被等比例缩放,以使它的用户坐标适合视口.

Svg支持嵌套的坐标系统将一个svg元素插入到一个新的文档中

Svg中的基本形状

线段<line x1=”” y1=”” x2=”” y2=””/>

笔画特性:stroke-width

笔画颜色stroke

线条透明度stroke-opacity

虚线:stroke-dasharray

矩形<rect x=”” y=”” width=”” height=””/>

圆角矩形加上属性rx 与ry

椭圆<ellipse cx=”” cy=”” rx=”” ry=””/>

多边形<polygon points=””/> 可以用来画任意封闭图形,不需要指定终点,自动闭合

属性fill-rule规定填充的规则,二个值为nonzero 默认和evenodd

折线<polyline/> 不会自动闭合

当使用<line> 和<polyline>划线时,可以为stroke-linecap指定不同的值来确定线的头尾形状,可能的取值为butt,round,square

属性stroke-linejoin用来指定线段在图形棱角处交叉时的效果,可能的取值有,miter 尖,round圆,bevel平

文档结构:

Svg提倡表现与结构分离,

我们有四种方式指定图像的表现信息分别是,内联样式,内部样式表,外部样式表,以及表现属性

内联样式

<circle  style=”stoke:black;fill:none”>

内部样式表

<svg>

<defs>

<style  type=”text/css”>

<![CDATA[[

circle{

fill:#ffc;

stoke:blue

}

]]>

</style>

</defs>

</svg>

外部样式表:

<?xml-stylesheethref=”ext_style.css” type=”text/css”?>

表现属性

<circle cx=”10”cy=”10” r=”5” fill=”red” stroke=”black” stroke-width=”2”/>

表现属性位于优先级的最底部.

分组和引用对象

<g>元素会将其所有的子元素作为一个组合,通常组合还会有一个唯一的id作为名称,

<use>元素,可以重用元素,

如<use xlin:href=”#house” x=”70” y=”100”>

<defs>元素,可以存放想要复用的对象,

<symbol>元素也提供一种组合元素的方式,他的内容永远不会显示,它还可以指定viewBox 和preserveAspectRatio属性

元素<image>可以包含一个完整的svg或者栅格文件,


猜你喜欢

转载自blog.csdn.net/github_35631540/article/details/79975953
SVG