返回顶部
首页 > 资讯 > 精选 >微信小程序怎么实现一个手写签名组件
  • 173
分享到

微信小程序怎么实现一个手写签名组件

2023-06-20 15:06:29 173人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关微信小程序怎么实现一个手写签名组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景:在做项目过程中,需要在微信小程序中实现手写签名组件。在网上找了微信小程序手写签名实现

这期内容当中小编将会给大家带来有关微信小程序怎么实现一个手写签名组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

背景:

在做项目过程中,需要在微信小程序中实现手写签名组件。在网上找了微信小程序手写签名实现,但是都是不太理想。在实际运用中,会因为实时计算较多的贝塞尔曲线而产生卡顿。效果不理想。所以退一步,不需要笔锋以及笔迹模拟效果。只需要简单的手写签名实现。

需求:

可以实现用户在微信小程序上手写签名。

需要组件化。

一、思路

在微信小程序中,我们使用canvas组件实现。将用户的输入想象成为一只笔。我们要画的签名是由很多点构成的。但是单纯的点是不能很好地构成线。点与点之间还要由线连接。下面是实现过程代码。

二、实现

1. 页面与样式

wxml

这里的canvas组件是最新的用法。

<view class="dashbox">  <view class="btnList">    <van-button size="small" bind:click="clearCanvas">清空</van-button>  </view>  <view class="handCenter">    <canvas       class="handWriting"       disable-scroll="{{true}}"       id="handWriting"      bindtouchstart="scaleStart"      bindtouchmove="scaleMove"       bindtouchend="scaleEnd"      bindtap="mouseDown"      type="2d"    >    </canvas>  </view></view>

wxss

.btnList{    width: 95%;    margin:0 auto;}.handWriting{    background: #fff;    width: 95%;    height: 80vh;    margin:0 auto}

2. 初始化

由于是在自定义组件中使用,所以要注意获取canvas的时候的this指向问题。如果不调用SelectorQuery的In方法,那么就在自定义组件获取不到canvas,因为这个时候指向的父组件。

Component({     data: {        canvasName:'#handWriting',        ctx:'',        canvasWidth:0,        canvasHeight:0,        startPoint:{            x:0,            y:0,        },        selectColor: 'black',        lineColor: '#1A1A1A', // 颜色        lineSize: 1.5,  // 笔记倍数        radius:5,//画圆的半径    },     ready(){        let canvasName = this.data.canvasName;        let query = wx.createSelectorQuery().in(this);//获取自定义组件的SelectQuery对象        query.select(canvasName)        .fields({ node: true, size: true })        .exec((res) => {          const canvas = res[0].node;          const ctx = canvas.getContext('2d');          //获取设备像素比          const dpr = wx.getSystemInfoSync().pixelRatio;          //缩放设置canvas画布大小,防止笔迹错位          canvas.width = res[0].width * dpr;          canvas.height = res[0].height * dpr;          ctx.scale(dpr, dpr);          ctx.lineJoin="round";          this.setData({ctx});        });          query.select('.handCenter').boundinGClientRect(rect => {            console.log('rect', rect);            this.setData({                canvasWidth:rect.width,                canvasHeight:rect.height            });        }).exec();    },   //省略以下代码......});

3. 点击时

Component({ //省略以上代码... methods: {            scaleStart(event){                if (event.type != 'touchstart') return false;                let currentPoint = {                    x: event.touches[0].x,                    y: event.touches[0].y                }                this.drawCircle(currentPoint);                this.setData({startPoint:currentPoint});          },            drawCircle(point){//这里负责点                let ctx = this.data.ctx;                ctx.beginPath();                ctx.fillStyle = this.data.lineColor;            //笔迹粗细由圆的大小决定                ctx.arc(point.x, point.y, this.data.radius, 0 , 2 * Math.PI);                ctx.fill();                ctx.closePath();          },          //省略以下代码... }})

4. 签名时

Component({  //省略以上代码  methods:{ drawLine(sourcePoint, targetPoint){            let ctx = this.data.ctx;            this.drawCircle(targetPoint);            ctx.beginPath();            ctx.strokeStyle = this.data.lineColor;            ctx.lineWidth = this.data.radius * 2;//这里乘2是因为线条的粗细要和圆的直径相等            ctx.moveTo(sourcePoint.x, sourcePoint.y);            ctx.lineTo(targetPoint.x, targetPoint.y);            ctx.stroke();            ctx.closePath();          },          clearCanvas(){//清空画布            let ctx = this.data.ctx;            ctx.rect(0, 0, this.data.canvasWidth, this.data.canvasHeight);            ctx.fillStyle = '#FFFFFF';            ctx.fill();          }  }})

上述就是小编为大家分享的微信小程序怎么实现一个手写签名组件了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 微信小程序怎么实现一个手写签名组件

本文链接: https://lsjlt.com/news/297698.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 微信小程序怎么实现一个手写签名组件
    这期内容当中小编将会给大家带来有关微信小程序怎么实现一个手写签名组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。背景:在做项目过程中,需要在微信小程序中实现手写签名组件。在网上找了微信小程序手写签名实现...
    99+
    2023-06-20
  • 微信小程序怎么实现简单手写签名组件
    这篇文章主要介绍了微信小程序怎么实现简单手写签名组件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序怎么实现简单手写签名组件文章都会有所收获,下面我们一起来看看吧。需求:可以实现用户在微信小程序上手写签...
    99+
    2023-06-08
  • 微信小程序怎么实现手写签名
    本文小编为大家详细介绍“微信小程序怎么实现手写签名”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序怎么实现手写签名”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在微信小程序上实现手写签名,获取canva...
    99+
    2023-06-29
  • 微信小程序实现手写签名
    本文实例为大家分享了微信小程序实现手写签名的具体代码,供大家参考,具体内容如下 本示例具备的功能: 1、笔迹绘制 2、笔迹清空 以下是js代码: var content = null...
    99+
    2024-04-02
  • 微信小程序canvas实现手写签名
    本文实例为大家分享了微信小程序canvas实现手写签名的具体代码,供大家参考,具体内容如下 很多时候,程序中需要用到签名的功能,附上源码(微信小程序) .wxml <view...
    99+
    2024-04-02
  • 微信小程序实现手写签名(签字版)
    本文实例为大家分享了微信小程序实现手写签名的具体代码,供大家参考,具体内容如下 公司近期有个需要用户签名的功能,就用小程序canvas写了个 wxml <view class...
    99+
    2024-04-02
  • 微信小程序如何实现手写签名
    这篇文章主要介绍了微信小程序如何实现手写签名的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序如何实现手写签名文章都会有所收获,下面我们一起来看看吧。效果wxml<view class=&...
    99+
    2023-07-02
  • 微信小程序实现横屏手写签名
    本文实例为大家分享了微信小程序实现横屏手写签名的具体代码,供大家参考,具体内容如下 1.关键配置: "pageOrientation": "landsc...
    99+
    2024-04-02
  • 微信小程序实现简单手写签名组件的方法实例
    目录背景:需求:效果一、思路 二、实现 1. 页面与样式 2. 初始化 3. 点击时 4. 签名时 三、总结 背景: 在做项目过程中,需要在微信小程序中实现手写签名组件。在网上找了微...
    99+
    2024-04-02
  • 微信小程序实现手写签名的示例代码
    目录1.效果图2.相关代码canvas代码js相关在微信小程序上实现手写签名,获取canvascontext新版本和旧版本有点坑,新版本在获取canvas后如果页面有滑动,则签名坐标...
    99+
    2024-04-02
  • 小程序实现手写签名
    本文实例为大家分享了小程序实现手写签名的具体代码,供大家参考,具体内容如下 方法不是我自己写的,但是也忘记最初的原版出自于哪里了,不过搜索下来就是大同小异,我就附上自己实测有效的!可...
    99+
    2024-04-02
  • 怎么写一个微信小程序
    这篇文章主要介绍了怎么写一个微信小程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求  小程序语音识别,全景图片观看,登录授权,获取个人...
    99+
    2024-04-02
  • 微信小程序怎么实现电子签名
    要在微信小程序中实现电子签名,可以按照以下步骤操作:1. 在小程序页面中创建一个画布(canvas)组件,用于绘制签名。可以使用 `...
    99+
    2023-08-18
    微信小程序
  • 小程序实现手写板签名
    本文实例为大家分享了小程序实现手写板签名的具体代码,供大家参考,具体内容如下 1.wxss代码 page {     background: #F8F8F8; } .qianmin...
    99+
    2024-04-02
  • 微信小程序中怎么实现一个搜索框组件
    今天就跟大家聊聊有关微信小程序中怎么实现一个搜索框组件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。search.wxml<view ...
    99+
    2024-04-02
  • 微信小程序实现电子签名
    本文实例为大家分享了微信小程序实现电子签名的具体代码,供大家参考,具体内容如下 <view class="sign-contain"> <view class...
    99+
    2024-04-02
  • 微信小程序实现手写板
    本文实例为大家分享了微信小程序实现手写板的具体代码,供大家参考,具体内容如下 <!-- wxml --> <view class="hxt-flex-column...
    99+
    2024-04-02
  • 小程序实现手写签名功能
    小程序利用canvas实现手写签名,供大家参考,具体内容如下 设置小程序横屏 在page.json或对应页面 .json文件中设置landscape代表固定横屏 "pageOrie...
    99+
    2024-04-02
  • 微信小程序怎么用canvas实现电子签名
    这篇文章主要介绍“微信小程序怎么用canvas实现电子签名”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么用canvas实现电子签名”文章能帮助大家解决问题。具体代码如下<view...
    99+
    2023-07-02
  • 如何实现一个微信小程序仪表盘组件
    小编给大家分享一下如何实现一个微信小程序仪表盘组件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言最近开发了一个小程序动态仪表...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作