zoukankan      html  css  js  c++  java
  • canvas与svg相关介绍与区别

    一、canvas    画布

         <canvas>元素用于图形的绘制,通过javascript来完成

         在给canvas标签写样式时要注意:不要在style中给canvas设置宽高,会用位移差

       canvas标签本身是没有绘图能力的,在绘图前,你需要在javascript中创建context对象

      首先是获取:var  c=document.getElementById("c")

      然后创建context对象:var can=c.getContext("2d")

      这样你就可以绘图了

      下面就写一些属性和简单的介绍

      属性1.fillStyle    设置或返回用于填充绘画的颜色、渐变或模式。

        2.strokeStyle     设置或返回用于笔触的颜色、渐变或模式。

        3.lineWidth      设置或返回当前的线条宽度。

      方法1.rect()      创建矩形

        2.fillRect()     绘制"被填充"的矩形。

        3.strokeRect()    绘制矩形(无填充)。

        4.clearRect()    在给定的矩形内清除指定的像素。

        5.fill()     填充当前绘图(路径)

        6.stroke()     绘制已定义的路径。

        7.beginPash()     起始一条路径,或重置当前路径

        8.moveTo()      把路径移动到画布中的指定点,不创建线条。

        9.closePash()    创建从当前点回到起始点的路径。

        10.lineTo()     添加一个新点,然后在画布中创建从该点到最后指定点的线条。

        11.arc()      创建弧/曲线(用于创建圆形或部分圆)。

        12.scale()     缩放当前绘图至更大或更小。

        13.rotate()      旋转当前绘图。

        14.translate()     重新映射画布上的 (0,0) 位置。

        15.transform()     替换绘图的当前转换矩阵。

        16.font()     设置或返回文本内容的当前字体属性。

        .....

    二、svg    矢量图

      svg指可伸缩矢量图形,用于定义用于网络的基于矢量的图形,使用XML格式定义图形。svg图像可在任何的分辨率下被高质量地打印,可在图像质量不下降的情况下被放大。

      svg的在html中有两种写:1.你可以直接写到body标签内    2.你可以写到你个svg格式的文件中,然后通过img标签的src属性引入。

      学习svg,我们只需要学习他的内部可以写那些标签,以及这些标签的内部属性

      1.<circle> 定义一个圆

        属性:cx="圆的x轴坐标"
           cy="圆的y轴坐标"
           r="圆的半径". 必需.

      2.<ellipse> 定义一个椭圆

        属性:cx="椭圆x轴坐标"
           cy="椭圆y轴坐标"
           rx="沿x轴椭圆形的半径"。必需。
           ry="沿y轴长椭圆形的半径"。必需。

      3.<g> 把所有相关的元素组合起来

        属性:id="该组的名称"
           fill="该组填充颜色"
           opacity="该组不透明度"

      4.<line> 定义一条线  

        属性:x1="直线起始点x坐标"
           y1="直线起始点y坐标"
           x2="直线终点x坐标"
           y2="直线终点y坐标"

      5.<image> 定义图像

        属性:x="图像的左上角的x轴坐标"

           y="图像的左上角的y轴坐标"

           width="图像的宽度". 必须.
           height="图像的高度". 必须.
           xlink:href="图像的路径". 必须.

       6.<pash> 定义一个路径

        属性:d="定义路径指令"        

    • M = moveto                           起始点坐标
    • L = lineto                                     相邻点坐标
    • H = horizontal lineto                    水平的线条,默认y轴上的值一样
    • V = vertical lineto                        垂直的线条,默认x轴上的值一样
    • C = curveto                                 
    • S = smooth curveto
    • Q = quadratic Bézier curve
    • T = smooth quadratic Bézier curveto
    • A = elliptical Arc                          定义曲线 后面有7个值
    • Z = closepath                              构成闭合回路 

      注意:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。

      A=elliptical Arc    后面的7个值       x半径  y半径  角度  弧长(0 劣弧 / 1 优弧 )  方向(0 逆时针 / 1 顺时针) 终点x坐标 终点y坐标

      7.<rect> 定义一个矩形

        属性:x="矩形的左上角的x轴"
           y="矩形的左上角的y轴"
           rx="x轴的半径(round元素)"
           ry="y轴的半径(round元素)" 
           width="矩形的宽度"。必需的。
           height="矩形的高度"。必需的。

      8.<text> 定义一个文本

        属性:x="列表的X -轴的位置。在文本中在第n个字符的位置在第n个x轴。如果后面存在额外的字符,耗尽他们最后一个字符之后放置的位置。 0是默认"

           y="列表的Y轴位置。(参考x)0是默认"
           dx="在字符的长度列表中移动相对最后绘制标志符号的绝对位置。(参考x)"

           dy="在字符的长度列表中移动相对最后绘制标志符号的绝对位置。(参考x)"

           text-anchor="middle" 让字体居中

      9.<use> 用于复制元素

        属性:x="克隆元素的左上角的x轴"
           y="克隆元素的左上角的y轴"
           width="克隆元素的宽度"
           height="克隆元素的高度"
           xlink:href="URI引用克隆元素"

      10.<animate> 定义动画

        属性:attributeName="目标属性名称"
           from="起始值"
           to="结束值"
           dur="持续时间"
           repeatCount="动画时间将发生"

      11.<polygon> 定义一个包含至少三边的图形

        属性:points="多边形的点。点的总数必须是偶数"。必需的

           fill-rule="FillStroke演示属性的部分"

      12.<polyline> 定义只有直线组成的任意形状 

        属性:points=折线上的"点"。必需的。

    三、canvas和svg的区别 

    SVG 是一种使用 XML 描述 2D 图形的语言。

    Canvas 通过 JavaScript 来绘制 2D 图形。

    SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。

    在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

    Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

    Canvas SVG
    依赖分辨率 不依赖分辨率
    不支持事件处理器 支持事件处理器
    弱的文本渲染能力 最适合带有大型渲染区域的应用程序(比如谷歌地图)
    能够以.png或.jpg格式保存结果图像 复杂度高会减慢渲染速度(任何过度使用DOM的应用都不快)
    最适合图像密集型的游戏,其中的许多对象会被频繁重绘 不适合游戏应用

      

    QQ: 2239081756

  • 相关阅读:
    求出123456 8910,数字,显示出来
    Django之Model操作
    AJAX全套
    Python之路【第十六篇】:Django【基础篇】
    Q2Day81
    Django第二重点(thml与django连接)
    react
    es6 和 python 语法比较
    微信
    py库: GUI(tkinter)
  • 原文地址:https://www.cnblogs.com/yangzhiqiang/p/10902504.html
Copyright © 2011-2022 走看看