美文网首页
钉钉小程序-canvas画出四象限

钉钉小程序-canvas画出四象限

作者: 小小_128 | 来源:发表于2021-05-12 15:12 被阅读0次
image.png

uniapp做钉钉小程序中的一个页面效果。是四象限,看坐标点所在区间属于什么维度。

template模块

<canvas :style="{ 'width':  clientWidth +'px','height': clientHeight + 'px'}" canvas-id="firstCanvas" id="firstCanvas"></canvas>

script模块

<script>
export default {
  data (){
    return { 
        clientWidth: null, // 画布宽度
        clientHeight: null, // 画布高度
        centerX: null, // 确定画布的中心原点
        centerY: null,
        unitScale: null, //确定画布的 单位刻度
    }
  },
  onReady: function(e) {
    let that = this;
    if (that.projectids == 23) {
    // 获取手机屏幕宽高
      uni.getSystemInfo({
          success: function(res) {

            // 1. 画布 宽、高
            that.clientWidth = res.windowWidth - 55;
            that.clientHeight = that.clientWidth * 2 / 3; //宽:高 = 3:2
        
            // 2. 确定画布的中心原点
            that.centerX = 0.5 * that.clientWidth;
            that.centerY = 0.5 * that.clientHeight;

            // 3.刻度
            that.unitScale = that.clientHeight / 20; // 18等份 因为要显示所以显示分为20等份
          }
      });
      that.interval = setInterval(() => {  // 用定时器是因为初始化的时候取不到坐标点
        if (that.xy.x != undefined) {
          that.draw(that.xy.x, that.xy.y)  // 取到数据时再次执行
        }
      }, 100);
    }
  },
  methods: {
    draw(dotX, dotY) {  // 中心点(x,y)
      var context = uni.createCanvasContext('firstCanvas');
      
      // 画X轴
      context.setStrokeStyle("#000");
      context.setLineWidth(2);
      context.moveTo(0, this.centerY);
      context.lineTo(this.clientWidth, this.centerY);
      context.stroke();

      // 画Y轴
      context.setLineWidth(2);
      context.moveTo(this.centerX, 0)
      context.lineTo(this.centerX, this.clientHeight);
      context.stroke();

      // 画 Y 轴的刻度
      for (let i = 0; i < 21; i++) {
         if (i != 0 && i != 20) {
            context.beginPath();
            context.arc(this.centerX, i * this.unitScale, 1.5, 0, 2 * Math.PI, true);
            context.stroke();
          }
      }

      // 画 X 轴的刻度
      for (let i = 0; i < 10; i++) {
        if (i != 0) {
          // x轴 负方式
          context.beginPath();
          context.arc(this.centerX - i * this.unitScale, this.centerY, 1.5, 0, 2 * Math.PI, true);
          context.stroke();

          // x轴 正方式
          context.beginPath();
          context.arc(this.centerX + i * this.unitScale, this.centerY, 1.5, 0, 2 * Math.PI, true);
          context.stroke();
        }
      }

      // 根据接口返回的坐标描点
      context.beginPath();
      let axisLength = this.clientHeight / 2 - 10;
      this.x = dotX * axisLength / 18;
      this.y = -dotY * axisLength / 18;
      context.arc(this.centerX + this.x, this.centerY + this.y, 15, 0, 2 * Math.PI, true);

      context.fillStyle = "rgba(123,161,206,.9)"; //设置填充颜色
      context.fill();
      context.strokeStyle = "rgba(255,255,255,0)";
      context.stroke();
      context.draw();
    },

    canvasIdErrorCallback: function(e) {
      console.error('error', e.detail.errMsg)
    },

    onUnload() {  // 页面卸载时要把定时器请求关掉
      clearInterval(this.interval)
    }
   }
}
</script>

相关文章

  • 钉钉小程序-canvas画出四象限

    uniapp做钉钉小程序中的一个页面效果。是四象限,看坐标点所在区间属于什么维度。 template模块 scri...

  • 钉钉小程序 开发 PHP + 钉钉小程序 (企业内部应用)

    钉钉小程序 开发 PHP + 钉钉小程序 (企业内部应用) 应公司需求 需要结合钉钉开发小程序 由于公司自用 所以...

  • 钉钉小程序

    1. setData 改变对应的this.data的值 注意:不要直接修改this.data对应的数据。在dd.h...

  • 钉钉小程序

    微信小程序转钉钉小程序 css和html文件命名acss,axml 底部导航写法(app.json)items,n...

  • 钉钉小程序填坑记

    第一章:什么是钉钉小程序 第一节:小程序简介 在钉钉内运行的"小程序"叫做E应用,后期小程序是来自于E应用的全新版...

  • 钉钉“小程序”,企业数字化办公新模式?

    据 36 氪消息,钉钉已于 6 月中旬上线企业级“小程序”。在钉钉开放平台的页面中,目前已上线“小程序 Easy ...

  • 钉钉小程序踩坑总结

    最近用uniapp写了一个钉钉小程序项目,由于刚兼容钉钉小程序不久,安卓和ios体验上差距还是蛮大的,包括本地测试...

  • 钉钉小程序常见问题

    uni-app 跨平台写的钉钉小程序 1、钉钉小程序 无权跨域调用 在开发者后台找到应用,设置相应的安全域名。注...

  • 钉钉微应用开发(一)环境搭建

    钉钉开发按照应用类型可以分为小程序以及h5微应用两种。小程序是钉钉自定义的一种开发模式,类似安卓或者微信小程序。和...

  • 钉钉小程序4

    最近在做钉钉小程序时发现一个问题,就是小程序点击返回按钮时和企业内部应用开发,三方应用开发是不同的,没办法监听返回...

网友评论

      本文标题:钉钉小程序-canvas画出四象限

      本文链接:https://www.haomeiwen.com/subject/uhsadltx.html