zoukankan      html  css  js  c++  java
  • canvas在vue中的应用

    使用cavas可以绘制各种图表、生成二维码、制作H5小游戏。

    生命周期
    canvas应该在mounted的生命周期中初始化,在updated中是无效的。

    export default {
      mounted() {
        this.initCanvas()
      },
      methods: {
        initCanvas() {
          console.log("初始化canvas")
          let canvas = document.getElementById('canvas');
          let ctx = canvas.getContext('2d');
        }
      }
    }
    

    响应式画布
    当需要使canvas铺满全屏时,直接使用css声明的效果不是我们需要的效果。

    // 错误的效果,将造成图像变形拉伸
    .canvas {
       100vw;
      height: 100vh;
    }
    

    正确的做法,我们应该给canvas的宽高赋值:

    let canvas = document.getElementById('canvas');
    let ctx = canvas.getContext('2d');
    let winW = window.innerWidth
    let winH = window.innerHeight
    canvas.width = winW
    canvas.height = winH
    

    响应式画布:

    let canvas;
    let ctx;
    export default {
      mounted() {
        this.initCanvas()
        // 当调整窗口大小时重绘canvas
        window.onresize = () => {
          this.initCanvas()
        }
      },
      methods: {
        initCanvas() {
          console.log("初始化canvas")
          canvas = document.getElementById('canvas');
          ctx = canvas.getContext('2d');
          canvas.width = window.innerWidth
          canvas.height = window.innerHeight
          this.drawSmile()
        },
        drawSmile() {
          ctx.beginPath();
          ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // 绘制
          ctx.moveTo(110, 75);
          ctx.arc(75, 75, 35, 0, Math.PI, false); // 口(顺时针)
          ctx.moveTo(65, 65);
          ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // 左眼
          ctx.moveTo(95, 65);
          ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // 右眼
          ctx.stroke();
        }
      }
    }
    
  • 相关阅读:
    JS检测浏览器Adobe Reader插件
    Java Filter防止sql注入攻击
    log4j的基本配置参数
    Log4j.properties配置详解
    使用Spring进行统一日志管理 + 统一异常管理
    springMVC获取request和response
    深入浅出Mybatis-分页
    PROPAGATION_REQUIRED事务管理
    Java String类型数据的字节长度
    构建高并发高可用的电商平台架构实践
  • 原文地址:https://www.cnblogs.com/unclefang/p/11180337.html
Copyright © 2011-2022 走看看