canvas和SVG

  • Canvas的介绍
  • 1.1、创建canvas元素

  • canvas的定义:它是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术。<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图。SVG 绘图很容易编辑与生成,但功能明显要弱一些。
  • canvas可以完成动画、游戏、图表、图像处理等原来需要Flash完成的一些功能。
  • <canvas id="can" width="800"  height="600">不支持Canvas</canvas>

    以上代码创建了一个宽度为800像素,高度为600像素的canvas。不建议使用CSS样式指定宽度和高度。
    canvas标签中间的内容为替代显示内容,当浏览器不支持canvas标签时会显示出来。

    创建了canvas元素后,要在canvas元素上面绘制图象,首先必须获取canvas环境上下文:
    canvas.getContext(画布上绘制的类型)
    2d: 表示2维
    experimental-webgl: 表示试验版3维
    webgl:表示3维

  • <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>canvas绘图1</title>
        </head>
        <body>
            <canvas id="canvas1" width="800" height="600"></canvas>
            <script type="text/javascript">
               //获得画布元素
                var canvas1=document.getElementById("canvas1");
                //获得2维绘图的上下文
                var ctx=canvas1.getContext("2d");
                
                //设置线宽
                ctx.lineWidth=10;
                //设置线的颜色
                ctx.strokeStyle="blue";
                
                //将画笔移动到00点
                ctx.moveTo(0,0);
                //画线到800,600的坐标
                ctx.lineTo(800,600);
                
                //执行画线
                ctx.stroke();
            </script>
        </body>
    </html>
    

      

    1.2、画线

  • context.moveTo(x,y)

    把画笔移动到x,y坐标,建立新的子路径。

    context.lineTo(x,y)
    建立上一个点到x,y坐标的直线,如果没有上一个点,则等同于moveTo(x,y),把(x,y)添加到子路径中。

    context.stroke() 
    描绘子路径//设置线宽

  • ctx.lineWidth = 10;
    //设置线的颜色
    ctx.strokeStyle = "blue";
    //将画笔移到x0,y0处
    context.moveTo(x0, y0);
    //从x0,y0到x1,y1画一条线
    ontext.lineTo(x1, y1);
    //从x1,y1到x2,y2画条线
    ontext.lineTo(x2, y2);
    //执行填充
    ontext.fill();
    //执行画线
    context.stroke();

     

    结合javascript事件实现鼠标自由划线:

  • <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title>canvas绘图2</title>
        </head>
    
        <body>
            <canvas id="canvas1" width="800" height="600"></canvas>
            <script type="text/javascript">
                //获得画布元素
                var canvas1 = document.getElementById("canvas1");
                //获得2维绘图的上下文
                var ctx = canvas1.getContext("2d");
    
                //设置线宽
                ctx.lineWidth = 10;
                //设置线的颜色
                ctx.strokeStyle = "blue";
                
                canvas1.onmousemove=function(e){
                    //划线到当前客户端的x与y座标
                    ctx.lineTo(e.clientX, e.clientY);
                    //执行画线
                    ctx.stroke();
                }
            </script>
        </body>
    
    </html>
原文地址:https://www.cnblogs.com/shangyixuan/p/10469072.html