所有分类
  • 所有分类
  • 后端开发
咱每天签到地点揭秘!Vue打造电子签名板,快来学画函数图形吧~

咱每天签到地点揭秘!Vue打造电子签名板,快来学画函数图形吧~

今天我们就要用vue实现一个电子签名的面板想要绘制图形,第一步想到的就是使用canvas标签,在之前的文章里我们使用canvas实现了一个前端生成图形验证码的组件,被吐槽不够安全,那么这个电子签名组件想必不会被吐槽了吧~标签只是图形容器,您

猜猜看,咱们每天都得签在哪儿?没错,就是银行!各种事情总需要留下咱大名。今儿个,我就分享下怎么使用Vue做一个电子签名板,感兴趣的话就继续往下看~

告诉你个简单的事,就是用Canvas画图,就像用HTML 5做画板那样。可是,画画这回事,主要得靠那个…对了,JavaScript。上次我们聊过那个验证码,虽然有点小问题,但还算可以防止黑客攻击。你知道这个电子签名组件吗?感觉真的不错!

咱们今天来学学怎么画函数图形呗,这个在电子签名里很常见的。只要用到5个函数就行了,像是beginPath(重新开始画),moveTo(指引着我们找到位置并且不留下任何痕迹),lineTo(沿着这条线往上加线条并标出个点),stroke(给图像上个色让它变漂亮),还有closePath(画完了结束,回到起始点)。虽然看似简单,但每个函数都有各自的工作:beginPath就是重新开始画;然后是moveTo帮我们定好点;接下来是lineTo可以在原有的线上增加新的线条并标注出一个点;stroke则是给整个图形涂上颜色;而千万别忘了closePath,这代表所有步骤都完成,又回到了起点。


搞定Canvas画图,其实就是那么几步。不论是电脑还是手机,都得先搞清楚怎么操作鼠标(比如触摸啊、拖动啊、然后放手)。画出画布后,选好要用哪个设备,接着调用对应的方法就行!

mounted() {
  let canvas = this.$refs.canvasF;
  canvas.height = this.$refs.canvasHW.offsetHeight - 100;
  canvas.width = this.$refs.canvasHW.offsetWidth - 10;
  this.canvasTxt = canvas.getContext("2d");
  this.canvasTxt.strokeStyle = this.color;
  this.canvasTxt.lineWidth = this.linewidth;
 }

刚刚不小心按错键了,得改个字。是不是感觉和网上注册时有遇到类似困扰?别急,小事儿,交给我来解决!

//电脑设备事件
  mouseDown(ev) {
   ev = ev || event;
   ev.preventDefault();
   let obj = {
    x: ev.offsetX,
    y: ev.offsetY
   };
   this.startX = obj.x;
   this.startY = obj.y;
   this.canvasTxt.beginPath();//开始作画
   this.points.push(obj);//记录点
   this.isDown = true;
  },

咋做电子签版儿呀?别急,你得用这些东西。

//移动设备事件
  touchStart(ev) {
   ev = ev || event;
   ev.preventDefault();
   if (ev.touches.length == 1) {
    this.isDraw = true; //签名标记
    let obj = {
     x: ev.targetTouches[0].clientX,
     y:
      ev.targetTouches[0].clientY -
      (document.body.offsetHeight * 0.5 +
       this.$refs.canvasHW.offsetHeight * 0.1)
    }; //y的计算值中:document.body.offsetHeight*0.5代表的是除了整个画板signatureBox剩余的高,this.$refs.canvasHW.offsetHeight*0.1是画板中标题的高
    this.startX = obj.x;
    this.startY = obj.y;
    this.canvasTxt.beginPath();//开始作画
    this.points.push(obj);//记录点
   }
  },

弄明白?学到新鲜事儿记得点个赞嘛~好嘞,你觉得咱今天的话题怎么样?快留言、分享还加赞!记得告诉你的小伙伴也看看!

//电脑设备事件
  mouseMove(ev) {
   ev = ev || event;
   ev.preventDefault();
   if (this.isDown) {
    let obj = {
     x: ev.offsetX,
     y: ev.offsetY
    };
    this.moveY = obj.y;
    this.moveX = obj.x;
    this.canvasTxt.moveTo(this.startX, this.startY);//移动画笔
    this.canvasTxt.lineTo(obj.x, obj.y);//创建线条
    this.canvasTxt.stroke();//画线
    this.startY = obj.y;
    this.startX = obj.x;
    this.points.push(obj);//记录点
   }
  },

原文链接:https://www.icz.com/technicalinformation/web/vue2/2024/03/11472.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?