• SVG之初识


    什么是SVG?

    也许现在很多人都听说过SVG的人比较多,但不一定了解什么是SVG:SVG(Scalable Vector Graphics 一大串看不懂的英文)可伸缩矢量图形,它是用XML格式来定义用于网络的基于矢量的图形,而它的特点就是 图像在放大或改变尺寸的情况下其图形质量不会有所损失,同时他和DOM一样都是W3C的一个标准。

    这里解释下位图和矢量图:

    位图,也就是我们经常能看到的图片,他是一个平面上密集排布的店的集合,也就是说它是由一个个点构成的。而如果对他进行放大那么相对应的点就会进行放大,这样就会让图片显得十分不清晰粗糙。

    矢量图,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。它的特点是放大后图像不会失真,和分辨率无关,适用于图形设计、文字设计和一些标志设计、版式设计等。矢量图格式有CGM, SVG, AI (Adobe Illustrator), CDR (CorelDRAW), PDF, SWF, VML等等。

    SVG的使用:

    SVG 代码以 <svg> 元素开始,包括开启标签 <svg> 和关闭标签 </svg> 。这是根元素。width 和 height 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。

    SVG 的 <circle> 用来创建一个圆。cx 和 cy 属性定义圆中心的 x 和 y 坐标。如果忽略这两个属性,那么圆点会被设置为 (0, 0)。r 属性定义圆的半径。

    stroke 和 stroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 2px 宽,黑边框。fill 属性设置形状内的颜色。我们把填充颜色设置为红色。

    关闭标签的作用是关闭 SVG 元素和文档本身。

    SVG的优势:

    • SVG 可被非常多的工具读取和修改(记事本也可以轻松打开修改)
    • SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
    • SVG 是可伸缩的
    • SVG 图像可在任何的分辨率下被高质量地打印
    • SVG 可在图像质量不下降的情况下被放大
    • SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
    • SVG 可以与 Java 等技术一起运行
    • SVG 是开放的标准
    • SVG 文件是纯粹的 XML

    我们就用SVG来画图:

    圆形(circle):cx和cy属性定义圆点的x和y坐标。如果省略cx和cy,圆的中心会被设置为(0, 0),r表示半径

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <circle cx="100" cy="50" r="40" stroke="black"
      stroke-width="2" fill="red"/>
    </svg>
    

    椭圆(ellipse):cx属性定义的椭圆中心的x坐标,cy属性定义的椭圆中心的y坐标,rx属性定义的水平半径,ry属性定义的垂直半径

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <ellipse cx="240" cy="100" rx="220" ry="30" style="fill:purple"/>
      <ellipse cx="220" cy="70" rx="190" ry="20" style="fill:lime"/>
      <ellipse cx="210" cy="45" rx="170" ry="15" style="fill:yellow"/>
    </svg>

    线(line):x1 属性在 x 轴定义线条的开始,y1 属性在 y 轴定义线条的开始,x2 属性在 x 轴定义线条的结束,y2 属性在 y 轴定义线条的结束

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <line x1="0" y1="0" x2="200" y2="200"
      style="stroke:rgb(255,0,0);stroke-2"/>
    </svg>
    

    多边形(polygon):

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <polygon points="200,10 250,190 160,210"
      style="fill:lime;stroke:purple;stroke-1"/>
    </svg>
    

    折线(polyline):

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <polyline points="20,20 40,25 60,40 80,120 120,140 200,180"
      style="fill:none;stroke:black;stroke-3" />
    </svg>
    

    路径(path):

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <path d="M150 0 L75 200 L225 200 Z" />
    </svg>
    

    文本(text):

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <text x="0" y="15" fill="red" transform="rotate(30 20,40)">I love SVG</text>
    </svg>
  • 相关阅读:
    C++ 字符串与数字之间的转换
    两种常见的模式匹配算法(代码实现)
    C++ string整行读取带空格的字符串
    JavaEE(一)开发环境搭建(JDK+Eclipse+Tomcat+Mysql+Spring)
    25java模拟容器的实现
    24java的StringBuilder类和StringBuffer类
    23java的String类常用方法
    22java的回调&内部类
    21java的抽象类和接口
    20java的组合&IDEA踩坑合集1
  • 原文地址:https://www.cnblogs.com/caidupingblogs/p/5980466.html
Copyright © 2020-2023  润新知