微信小程序用canvas实现电子签名

微信小程序用canvas实现电子签名攻略

1.前置知识

  1. 了解canvas的基本用法
  2. 了解微信小程序的基本开发知识

2.实现步骤

2.1 引进canvas组件

在小程序的json文件中引进canvas组件,例如:

{
  "usingComponents": {
    "canvasdrawer": "../../components/canvasdrawer/canvasdrawer"
  }
}

2.2 在页面上使用canvas组件

在wxml文件中使用canvas组件,在canvas组件上设置id并设定宽高,例如:

<canvasdrawer canvas-id='canvas' canvas-width=750 canvas-height=1000></canvasdrawer>

2.3 配置canvas组件

在小程序的js文件的onReady方法中获取canvas组件,将canvas的2d上下文赋予draw函数,设置样式

onReady: function () {
    var context = wx.createCanvasContext('canvas', this)
    this.draw(context);
},

draw: function (ctx) {
    ctx.setStrokeStyle('#000000')
    ctx.setLineWidth(4)
    ctx.setLineCap('round')
    ctx.beginPath()
}

2.4 实现签名功能

绑定touchstart、touchmove和touchend事件,在touchstart事件中获取当时的坐标,touchmove中实时画出线条,touchend中结束线条绘制

canvasStart: function(event) {
    this.setData({
        hidden: false
    });
    this.context.setStrokeStyle('#000000');
    this.context.setLineWidth(4);
    this.context.setLineCap('round');
    this.context.beginPath();

    var touches = event.touches[0];
    var x = touches.x;
    var y = touches.y;
    this.context.moveTo(x, y);
},

canvasMove: function(event) {
    var touches = event.touches[0];
    var x = touches.x;
    var y = touches.y;
    this.context.lineTo(x, y);
    this.context.stroke();
},

canvasEnd: function(event) {
    this.setData({
        hidden: true
    });
}

2.5 保存签名

将签名存储到临时文件中,使用小程序提供的api进行保存

canvasSave: function() {
    var that = this;
    wx.canvasToTempFilePath({
        canvasId: 'canvas',
        success: function(res) {
            console.log(res.tempFilePath)
            wx.saveImageToPhotosAlbum({
                filePath: res.tempFilePath,
                success: function(res) {
                    wx.showToast({
                        title: '保存成功',
                        icon: 'success',
                        duration: 2000
                    })
                },
                fail: function(res) {
                    console.log(res)
                    if (res.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
                        wx.openSetting({
                            success(settingdata) {
                                console.log(settingdata)
                                if (settingdata.authSetting["scope.writePhotosAlbum"]) {
                                    console.log("获取权限成功,再次点击图片保存到相册")
                                } else {
                                    console.log("获取权限失败")
                                }
                            },
                            fail(failed) {
                                console.log("打开设置失败", failed)
                            }
                        })
                    }
                }
            })
        },
        fail: function(res) {
            console.log(res.errMsg)
        }
    });
}

3.示例1:微信小程序电子签名板

可参考微信小程序电子签名板

4.示例2:基于node.js的电子签名服务

可参考基于node.js的电子签名服务

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序用canvas实现电子签名 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • java实现ATM机系统(2.0版)

    Java实现ATM机系统(2.0版)攻略 1. 简介 本文主要介绍如何使用Java语言实现ATM机系统。ATM机系统是现代银行业务基础设施之一,而Java是一门优秀的编程语言,因此使用Java实现ATM机系统具有重要的现实意义和学习价值。 2. 功能需求 ATM机系统需要实现以下功能: 取款 存款 查询余额 修改密码 退出系统 3. 系统架构 ATM机系统的…

    Java 2023年5月23日
    00
  • Jvisualvm监控远程SpringBoot项目的过程详解

    以下是“JVisualVM监控远程SpringBoot项目的过程详解”的完整攻略: 简介 JVisualVM是Java虚拟机监视器和性能分析工具的图形化界面,它提供了一组用于分析Java应用程序运行的工具,包括CPU和堆剖析,线程和类查看器,GC鉴定工具等等,可以方便地监控Java应用的性能,分析应用的性能瓶颈。 Spring Boot为开发者提供了一种更简…

    Java 2023年5月20日
    00
  • 浅谈StringEntity 和 UrlEncodedFormEntity之间的区别

    十分感谢您对本网站的关注,下面是关于 “浅谈StringEntity 和 UrlEncodedFormEntity之间的区别” 的详细讲解。 StringEntity 和 UrlEncodedFormEntity 介绍 StringEntity 和 UrlEncodedFormEntity 是 Apache HttpClient 中两种常见的 HttpEnt…

    Java 2023年5月20日
    00
  • 微信小程序实现横屏手写签名

    微信小程序可以通过使用第三方库实现横屏手写签名功能。以下是一些示例来演示如何实现这一功能。 预备知识 在实现横屏手写签名功能前,必须具备以下的预备知识: 了解Canvas绘图的基本概念。 了解怎样创建并运用自定义小程序组件。 了解JavaScript语言,并熟悉使用第三方JavaScript库。 实现步骤 创建一个新的小程序页面,例如名为“Signature…

    Java 2023年5月23日
    00
  • 创建一个空的IBM DB2 ECO数据库的方法

    创建一个空的 IBM DB2 ECO 数据库需要按照以下步骤进行: 步骤一:打开 IBM DB2 数据库控制台 首先需要在 IBM DB2 数据库控制台中打开一个空的命令行窗口。在控制台菜单栏选择“工具”->“命令行窗口”,或者使用快捷键“Alt+F2”打开空的命令行窗口。 步骤二:连接到 IBM DB2 数据库实例 在打开的命令行窗口中输入以下命令,…

    Java 2023年6月15日
    00
  • JSP 获取spring容器中bean的两种方法总结

    介绍JSP和Spring容器 JavaServer Pages(JSP)是一种在服务器上使用的Java技术,用于创建动态Web页面。Spring容器是一个轻量级的Java开发框架,用于协调Java应用中的对象和实现应用程序中不同层之间的松耦合。 JSP获取Spring容器中Bean的两种方法 Spring容器中的Bean可以被JSP使用,JSP可以通过以下两…

    Java 2023年6月16日
    00
  • 什么是对象引用?

    对象引用是 Java 中一种特殊的数据类型,用于存储对象在内存中的地址。在 Java 中,所有的对象都是在堆内中分配的,而对象引用则是在栈存中分配的对象引用可以用来访问对象的属性和方法。 以下是对象引用的完整使用攻略: 声明对象用 在 Java 中,使用名或接口名来声明对象引用。以下是一个声明对象引用的示例: public class ObjectRefer…

    Java 2023年5月12日
    00
  • Eclipse自动生成方法存根该怎么设置?

    进入Eclipse的“首选项”设置界面 在Eclipse的菜单栏中选择“Window” -> “Preferences”,进入Eclipse的设置(Preferences)界面。 打开“Java” -> “Code Style” -> “Code Templates”选项卡 在Eclipse设置界面中,展开“Java”栏目,并点击“Code…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部