• 2019.9.6canvas中绘制图片


    在canvas中绘制图片,首先需要创建一个图片对象

    var canvas = document.getElementById("c1");

    var ctx = canvas.getContext('2d');

    var img = new Image();
    img.src = "imgs/pic02.jpg";

    此时,需要注意的是绘制图片的过程是异步执行

    因此,要想绘制出来图片,需要在加载完成之后才能绘制

    img.onload = function () {

    //等待img加载完成以后执行

    ctx.drawImage(img,0,0,100,100);

    }

    总结一下最近所学的canvas的api

    1、矩形 ctx.strokeRect() ctx.fillRect() ctx.clearRect()清除画布
    2、文本 ctx.storkeText() ctx.fillText() ctx.measureText(txt) -->obj.width
    3、路劲 描边 填充 裁减 渐变
    ctx.beginPath() ctx.closePath()
    ctx.moveTo() ctx.lineTo() ctx.arc()
    ctx.stroke() ctx.fill ctx.clip()
    创建一个渐变对象;添加渐变的颜色
    4、图像 ctx.drawImage

    绘图上下文的状态改变 和 变形
    ctx.rotate(deg);//画笔旋转 deg-->角度
    ctx.translate(x,y);//变化坐标原点的变化 --- 平移
    ctx.scale(x,y);//画笔 缩放

    ctx.save();//保存绘图上下文 当前的变形数据
    ....
    ctx.restore();//恢复最近一次保存的画笔的变形状态

    下面我们来绘制出在画布不停旋转的图像

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    body{
    text-align: center;
    }
    canvas{
    background-color: #eee;
    }
    </style>
    </head>
    <body>
    <h3>Canvas绘制图像--旋转的飞机</h3>
    <canvas id="c1">
    您的浏览器不支持canvas标签
    </canvas>
    <script>
    var canvas = document.getElementById("c1");
    var w = 600,h = 400;
    canvas.width = w;
    canvas.height = h;
    var ctx = canvas.getContext('2d');

    var img = new Image();
    img.src = "imgs/hero1.png";

    img.onload = function () {
    var deg = 0;
    setInterval(function () {
    ctx.clearRect(0,0,w,h);
    deg += 5 ;
    // 左上角的小飞机
    // 保存画笔的当前变形的状态
    ctx.save();
    // 原点做平移
    ctx.translate(img.width/2,img.height/2)
    // 旋转画笔
    ctx.rotate(deg * Math.PI/180);
    ctx.drawImage(img,-(img.width/2),-(img.height/2));
    // 逆向旋转
    // ctx.rotate(-deg * Math.PI/180);
    // 恢复原点
    // ctx.translate(-(img.width/2),-(img.height/2));
    // 恢复到上一次的保存变形状态
    ctx.restore();

    // 左下角的飞机
    // 保存画笔的当前变形的状态
    ctx.save();
    ctx.translate(img.width/2,h - img.height/2)
    // 旋转画笔
    ctx.rotate(deg * Math.PI/180);
    ctx.drawImage(img,-(img.width/2),-(img.height/2));
    // 逆向旋转
    // ctx.rotate(-deg * Math.PI/180);
    // 恢复原点
    // ctx.translate(-(img.width/2),-(h - img.height/2));
    // 恢复到上一次的保存变形状态
    ctx.restore();
    } , 41)
    }

    </script>
    </body>
    </html>

  • 相关阅读:
    数据库知识点
    hibernate5--主键生成策略
    hibernate5学习知识点小结
    hibernate5小案例讲解
    hibernate5新手跳过的坑
    strut2_struts.xml文件配置知识点汇集
    在使用ElementUI的JSP项目中,集成富文本编辑器QuillEditor
    如何在JSP中使用VUE/elementUI
    Java定时任务--Timer和TimerTask
    SecureFX的破解问题
  • 原文地址:https://www.cnblogs.com/awei313558147/p/11574929.html
Copyright © 2020-2023  润新知