zoukankan      html  css  js  c++  java
  • 从零开始学习SVG

    1 什么是SVG?

    • MDN中的定义是:SVG即可缩放矢量图形(Scalable Vector Graphics,SVG),是一种用来描述二维矢量图形的 XML 标记语言。 简单地说,SVG 面向图形,HTML 面向文本。
    • SVG 与 Flash 类似,都是用于二维矢量图形,二者的区别在于,SVG 是一个 W3C 标准,基于 XML,是开放的,而 Flash 是封闭的基于二进制格式的。因为都是 W3C 标准,SVG 与其他的 W3C 标准,比如 CSSDOM 和 SMIL 等能够协同工作。

    2 SVG的坐标系统

    • 对于所有元素,SVG使用的坐标系统或者说网格系统,和Canvas用的差不多(所有计算机绘图都差不多)。这种坐标系统是:以页面的左上角为(0,0)坐标点,坐标以像素为单位,x轴正方向是向右,y轴正方向是向下。注意,这和你小时候所教的绘图方式是相反的。但是在HTML文档中,元素都是用这种方式定位的。

    3 画图形

    • 画矩形(rect)  
      <rect x="60" y="10" rx="10" ry="10" width="30" height="30"/>
      /*
      
      x        矩形左上角的x位置
      y        矩形左上角的y位置
      width    矩形的宽度
      height   矩形的高度
      rx       圆角的x方位的半径 
      ry       圆角的y方位的半径
      */
    • 画圆形(circle)
      <circle cx="25" cy="75" r="20"/>
      /*
      
      r   圆的半径
      cx  圆心的x位置
      cy  圆心的y位置
      
      */
    • 画椭圆(ellipse)
      <ellipse cx="75" cy="75" rx="20" ry="5"/>
      /*
      
      rx  椭圆的x半径
      ry  椭圆的y半径
      cx  椭圆中心的x位置
      cy  椭圆中心的y位置
      
      */
    • 画直线(line)
      <line x1="10" x2="50" y1="110" y2="150"/>
      /*
      
      x1   起点的x位置
      y1   起点的y位置
      x2   终点的x位置
      y2   终点的y位置
      
      */
    • 画折线(polyline)
      <polyline points="60 110, 65 120, 70 115, 75 130, 80 125, 85 140, 90 135, 95 150, 100 145"/>
      /*
      
      points
      点集数列。每个数字用空白、逗号、终止命令符或者换行符分隔开。每个点必须包含2个数字,一个是x坐标,一个是y坐标。所以点列表 (0,0), (1,1) 和(2,2)可以写成这样:“0 0, 1 1, 2 2”。
      
      */
    • 画多边形(polygon)
      <polygon points="50 160, 55 180, 70 180, 60 190, 65 205, 50 195, 35 205, 40 190, 30 180, 45 180"/>
      /*
      
      points
      点集数列。每个数字用空白符、逗号、终止命令或者换行符分隔开。每个点必须包含2个数字,一个是x坐标,一个是y坐标。所以点列表 (0,0), (1,1) 和(2,2)可以写成这样:“0 0, 1 1, 2 2”。路径绘制完后闭合图形,所以最终的直线将从位置(2,2)连接到位置(0,0)。
      
      */
    • 画路径()
      <path d="M 20 230 Q 40 205, 50 230 T 90230"/>
      /**/

       指令及参数见下图

      指令

      参数

      说明

      M

      x y

      将画笔移动到点(x,y)

      L

      x y

      画笔从当前的点绘制线段到点(x,y)

      H

      画笔从当前的点绘制水平线段到点(x,y0)

      V

      画笔从当前的点绘制竖直线段到点(x0,y)

      A

      rx ry x-axis-rotation large-arc-flag sweep-flag x y

      画笔从当前的点绘制一段圆弧到点(x,y)

      C

      x1 y1, x2 y2, x y

      画笔从当前的点绘制一段三次贝塞尔曲线到点(x,y)

      S

      x2 y2, x y

      特殊版本的三次贝塞尔曲线(省略第一个控制点)

      Q

      x1 y1, x y 

      绘制二次贝塞尔曲线到点(x,y)

      T

      x y

      特殊版本的二次贝塞尔曲线(省略控制点)

      Z

      无参数

      绘制闭合图形,如果d属性不指定Z命令,则绘制线段,而不是封闭图形。

    4 待补充

  • 相关阅读:
    PythonのTkinter基本原理
    使用 Word (VBA) 分割长图到多页
    如何使用 Shebang Line (Python 虚拟环境)
    将常用的 VBScript 脚本放到任务栏 (Pin VBScript to Taskbar)
    关于 VBScript 中的 CreateObject
    Windows Scripting Host (WSH) 是什么?
    Component Object Model (COM) 是什么?
    IOS 打开中文 html 文件,显示乱码的问题
    科技发展时间线(Technology Timeline)
    列置换密码
  • 原文地址:https://www.cnblogs.com/nolaaaaa/p/9124126.html
Copyright © 2011-2022 走看看