美文网首页
svg——适量图形的创造(1)

svg——适量图形的创造(1)

作者: 饥人谷_oathy | 来源:发表于2017-06-13 12:01 被阅读0次

前几天,尝试用html+css制作图像的痛苦历历在目,绞尽脑汁的去实现各种曲线,不断的调试逼近,才出现一个勉强一看的图形。然后震惊的发现,原来这些图像用svg做可以非常容易的解决,所以今天决定对svg的学习做一个初略的记录。

基本信息

一个简单的SVG文档由<svg>根元素和基本的形状元素构成。另外还有一个g元素,它用来把若干个基本形状编成一个组。SVG可以成为任何复杂的组合图形。SVG支持渐变、旋转、滤镜效果、JavaScript接口等等功能,但都需要在一个定义好的图形区域内实现。

  • SVG的元素和属性必须按标准格式书写,因为XML是区分大小写的(这一点和html不同)
  • SVG里的属性值必须用引号引起来,就算是数值也必须这样做。

网格

svg的坐标系统与我们平常的绘图坐标方式是相反的。
这种坐标系统是:以页面的左上角为(0,0)坐标点,坐标以像素为单位,x轴正方向是向右,y轴正方向是向下。


SVG|MDN

基本图形

  • 矩形
<rect x="10" y="10" width="30" height="30"/>
<rect x="60" y="10" rx="10" ry="10" width="30" height="30"/>
x         矩形左上角的x位置 
y         矩形左上角的y位置
width     矩形的宽度
height    矩形的高度
rx        圆角的x方位的半径
ry        圆角的y方位的半径
  • 圆形
<circle cx="25" cy="75" r="20"/>
r         圆的半径  (椭圆:cx  椭圆中心的x位置 
                            cy  椭圆中心的y位置 )
cx        圆心的x位置
cy        圆心的y位置
  • 折线
<polyline points="60 110, 65 120, 70 115"/>

points点集数列。每个数字用空白、逗号、终止命令符或者换行符分隔开。每个点必须包含2个数字,一个是x坐标,一个是y坐标。所以点列表 (0,0), (1,1) 和(2,2)可以写成这样:“0 0, 1 1, 2 2”。

  • 多边形
<polygon points="50 160, 55 180, 70 180"/>

polygon和折线很像。不同的是,polygon的路径在最后一个点处自动回到第一个点。

  • 路径
<path d="M 20 230 Q 40 205, 50 230 T 90230"/>

svg中最常见的形状,也是最强大的功能,可以实现所有的基本形状。

路径

  • 直线命令
M x y  (or m dx dy)     对画笔的绝对定位
L x y  (or l dx dy)     在当前位置和新位置之间画一条线段
H x    (or h dx)        绘制平行线
V y    (or v dy)        绘制垂直线
Z      (or z)           从当前点画一条直线到路径的起点
  • 曲线命令
    贝塞尔曲线
    我们从稍微复杂一点的三次贝塞尔曲线C入手,三次贝塞尔曲线需要定义一个点和两个控制点,所以用C命令创建三次贝塞尔曲线,需要设置三组坐标参数:
C x1 y1, x2 y2, x y (or c dx1 dy1, dx2 dy2, dx dy)

另一种可用的贝塞尔曲线是二次贝塞尔曲线Q,它比三次贝塞尔曲线简单,只需要一个控制点,用来确定起点和终点的曲线斜率。因此它需要两组参数,控制点和终点坐标。

Q x1 y1, x y (or q dx1 dy1, dx dy)

弧形
基本上,弧形可以视为圆形或椭圆形的一部分。假设,已知椭圆形的长轴半径和短轴半径,另外已知两个点(它们的距离在圆的半径范围内),这时我们会发现,有两个路径可以连接这两个点。每种情况都可以生成出四种弧形。所以,为了保证创建的弧形唯一,A命令需要用到比较多的参数:

A rx ry x-axis-rotation large-arc-flag sweep-flag x y
 a rx ry x-axis-rotation large-arc-flag sweep-flag dx dy
...........................................................
large-arc-flag(角度大小) 和sweep-flag(弧线方向)
large-arc-flag决定弧线是大于还是小于180度,0表示小角度弧,1表示大角度弧。
sweep-flag表示弧线的方向,0表示从起点到终点沿逆时针画弧,1表示从起点到终点沿顺时针画弧。

上色

大多数基本的涂色可以通过在元素上设置两个属性来搞定:fill属性和stroke属性。
fill 属性设置对象内部的颜色
stroke属性设置绘制对象的线条的颜色。

此外,在SVG中你可以分别定义填充色和边框色的不透明度。
fill-opacity属性 控制填充色的不透明度
stroke-opacity属性 控制描边的不透明度。

text

在一个SVG文档中,<text>元素内部可以放任何的文字。

<text x="10" y="10">Hello World!</text>

相关文章

  • svg——适量图形的创造(1)

    前几天,尝试用html+css制作图像的痛苦历历在目,绞尽脑汁的去实现各种曲线,不断的调试逼近,才出现一个勉强一看...

  • SVG-绘制图形,渐变模糊效果,TWO.JS-12.18

    svg 基础 1.svg是一种使用xml技术描述二维图形的语言,是一种适量图2.与canvas相比的优势 能被搜索...

  • HTML5 内联 SVG

    什么是SVG?1.SVG 指可伸缩矢量图形2.SVG 用于定义用于网络的基于矢量的图形3.SVG 使用XML格式定...

  • H5中SVG的使用

    一、 SVG — 可缩放矢量图形 1、 什么是SVG SVG是一种使用XML技术描述二维图形的语言,svg是一种矢...

  • HTML_内联SVG

    1、什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics)SVG 用于定义...

  • SVG矢量图形打造不规则的自定义控件

    svg 概念 :矢量图形 SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG ...

  • iOS SVGKit的使用

    svg 可缩放的矢量图形 SVG 可伸缩矢量图形 (Scalable Vector Graphics) SVG 文...

  • 9.SVG动画

    SVG: 资料1资料2 用法: VectorDrawable: 创建基于XML的SVG图形 AnimatedVec...

  • 2019-06-20

    SVG版块知识内容1 什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics...

  • 关于canvas和svg

    canvas和svg都是用来在浏览器中创建图形; 1、SVG svg是用XML描述图形的一种语言,它是不依赖分辨率...

网友评论

      本文标题:svg——适量图形的创造(1)

      本文链接:https://www.haomeiwen.com/subject/cftdqxtx.html