• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
EasyCodeUp
博客园    首页    新随笔    联系   管理    订阅  订阅
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>
posted on 2019-03-04 10:02  逍遥自成一派  阅读(295)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3