zoukankan      html  css  js  c++  java
  • svg基础标签说明

    path-路径
    上面的基本形状其实都属于路径的一个延伸,都是基于 path 实现的。
    path 有很多的语法属性,可以自定义实现复杂的形状。
    其中坐标点有多种写法,且绘制属性不区分大小写。

    逗号分割坐标点:x1 y1 , x2 y2
    无逗号:x1 y1 x2 y2
    逗号分隔 x y :x1,y1 x2,y2

    M/m
    语法:M x y | m x y | m x,y
    描述:定义起始点,没什么效果
    <svg width="200" height="100" viewBox="0 0 200 100">
    <path d="M 10 10"/>
    </svg>

    L/l
    语法:L x y
    描述:画线段,移动到某一坐标,可以使用 m 重新定义起点
    <svg width="200" height="100" viewBox="0 0 200 100">
    <path d="M 10 10 L 10 50 L 50 50 L 100 80 M 100 100 L 180 50" stroke="#000" fill="none"/>
    </svg>

    H/h
    语法:H x
    描述:画一条横线
    <svg width="200" height="100" viewBox="0 0 200 100">
    <path d="M 50 50 H 150" stroke="#000" fill="none"/>
    </svg>

    V/v
    语法:V y
    描述:画一条竖线
    <svg width="200" height="100" viewBox="0 0 200 100">
    <path d="M 100 10 v 120" stroke="#000" fill="none"/>
    </svg>


    Z/z
    语法:Z
    描述:标示结束,并且和开始的点连起来
    <svg width="200" height="100" viewBox="0 0 200 100">
    <path d="m 10 10 h 10 v 10 l 50 0 v 50 z" stroke="#000" fill="orange" stroke-width="3"/>
    </svg>

    命令名称参数
    M moveto  移动到 (x y)+
    Z closepath  关闭路径 (none)
    L lineto  画线到 (x y)+
    H horizontal lineto  水平线到 x+
    V vertical lineto  垂直线到 y+
    C curveto  三次贝塞尔曲线到 (x1 y1 x2 y2 x y)+
    S smooth curveto  光滑三次贝塞尔曲线到 (x2 y2 x y)+
    Q quadratic Bézier curveto  二次贝塞尔曲线到 (x1 y1 x y)+
    T smooth quadratic Bézier curveto  光滑二次贝塞尔曲线到 (x y)+
    A elliptical arc  椭圆弧 (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
    R Catmull-Rom curveto*  Catmull-Rom曲线 x1 y1 (x y)+

    SVG中的路径数据,即path元素的 d 属性,有一系列的路径绘制指令,其中椭圆弧指令(A)最复杂,不算椭圆弧起始点的x,y坐标的话,依然有 7 个参数。

    SVG椭圆弧指令的参数,与Canvas等圆弧指令的参数有很大差别,Canvas中使用圆心、半径、起始角度、结束角度等为参数,而SVG使用起始点坐标、半径、方向、结束点坐标等为参数。

    SVG之所以实现为这样的参数形式,是因为SVG中的路径包含的每段子路径具有依次首尾相连的特性,这样每一段路径绘制的起点终点就比较明确直观。

    SVG椭圆弧路径指令说明:

    指令 A (绝对) a (相对)
    名称 elliptical arc 椭圆弧
    参数
    (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+

    rx ry 是椭圆的两个半轴的长度。

    x-axis-rotation 是椭圆相对于坐标系的旋转角度,角度数而非弧度数。

    large-arc-flag 是标记绘制大弧(1)还是小弧(0)部分。

    sweep-flag 是标记向顺时针(1)还是逆时针(0)方向绘制。

    x y 是圆弧终点的坐标。

    描述 从当前点绘制一段椭圆弧到点 (x, y),椭圆的大小和方向由 (rx, ry) 和 x-axis-rotation 参数决定, x-axis-rotation 参数表示椭圆整体相对于当前坐标系统的旋转角度。椭圆的中心坐标 (cx, cy) 会自动进行计算从而满足其它参数约束。large-arc-flag 和 sweep-flag 也被用于圆弧的计算与绘制。
    实例:

    <path d="M300,200 h-150 a150,150 0 1,0 150,-150 z"
    fill="red" stroke="blue" stroke-width="5" />
    <path d="M275,175 v-150 a150,150 0 0,0 -150,150 z"
    fill="yellow" stroke="blue" stroke-width="5" />

    <path d="M600,350 l 50,-25
    a25,25 -30 0,1 50,-25 l 50,-25
    a25,50 -30 0,1 50,-25 l 50,-25
    a25,75 -30 0,1 50,-25 l 50,-25
    a25,100 -30 0,1 50,-25 l 50,-25"
    fill="none" stroke="red" stroke-width="5" />
    ————————————————

  • 相关阅读:
    POJ1850Code
    POJ1019Number Sequence
    POJ2115C Looooops
    POJ1496Word Index
    POJ3292Semiprime Hnumbers
    POJ1942Paths on a Grid
    搞笑!
    个人感觉vs 提高效率的快捷键
    PYTHON实现 字符串转化为十六进制串
    scapy发送伪装包(1) 获取本机信息
  • 原文地址:https://www.cnblogs.com/njccqx/p/12973400.html
Copyright © 2011-2022 走看看