原生微信小程序canvas签名功能

半个月前百度搜出来的,没存书签现在不知道是哪篇文章了,再搜也没搜出来那篇文章,还好当时把代码复制到本地跑了一下,现在再发csdn存一下。

sign.js

Page({data: {ctx: null,width: null,height: null,drawCount: 0,drawState: "init"},onShow: function () {this.initCanvas()},initCanvas() {let {width,height} = this.datawidth = wx.getSystemInfoSync().windowWidthheight = wx.getSystemInfoSync().windowHeightconsole.log(wx.getSystemInfoSync())this.data.ctx = wx.createCanvasContext('canvas')this.setData({width,height})this.clearCanvas()},clearCanvas() {this.data.drawCount = 0this.data.drawState = "ing"this.data.ctx.setTextBaseline('top')this.data.ctx.setTextAlign('center')this.data.ctx.setFontSize(20)this.data.ctx.setFillStyle('#616165');this.data.ctx.fillText("请灰色区域内完成签名", this.data.width / 2, 30)this.data.ctx.draw(false)},catchtouchstart(e) {if (this.data.drawCount == 0) {this.data.ctx.draw(false)}this.data.drawCount++this.data.ctx.moveTo(e.changedTouches[0].clientX, e.changedTouches[0].clientY)},catchtouchmove(e) {if (this.data.drawState == "stop") returnthis.data.drawState = "ing"if (e.touches.length > 1) {return}this.data.ctx.setStrokeStyle('#000000');this.data.ctx.setLineWidth(3);this.data.ctx.setShadow(0, 0, 0.5, '#000000')this.data.ctx.setLineCap('round');this.data.ctx.setLineJoin('round');this.data.ctx.lineTo(e.changedTouches[0].clientX, e.changedTouches[0].clientY)this.data.ctx.stroke()this.data.ctx.draw(true)this.data.ctx.moveTo(e.changedTouches[0].clientX, e.changedTouches[0].clientY)},canvasToImg() {if (this.data.drawState == "init") returnthis.data.drawState = "stop"wx.canvasToTempFilePath({canvasId: 'canvas',success: res => {console.log(res.tempFilePath)// ...// 上传服务器wx.navigateTo({url: '/pages/showImg/showImg?src=' + res.tempFilePath,})}})}
})

sign.wxml

<canvas canvas-id="canvas" style="width:{{width+'px'}};height:{{height+'px'}}" catchtouchstart="catchtouchstart" catchtouchmove="catchtouchmove" catchtouchend="catchtouchend"></canvas>
<view class="btn-reset" catchtap="clearCanvas">重新绘制</view>
<view class="btn-ok" catchtap="canvasToImg">确认</view>

sign.wxss

page{position: relative;background-color: #f2f2f2;width: 100%;height: 100%;
}
canvas{width: 100%;height: 100vh;
}
.btn-reset{width: 100rpx;position: absolute;bottom: 10rpx;right: 160rpx;padding: 8rpx;text-align: center;border: 1rpx solid #4965B3;color: #4965B3;font-size: 18rpx;border-radius: 8rpx;box-sizing: border-box;
}
.btn-ok{width: 100rpx;position: absolute;bottom: 10rpx;right: 30rpx;padding: 8rpx;text-align: center;background-color: #4965B3;border: 1rpx solid #4965B3;color: #fff;font-size: 18rpx;border-radius: 8rpx;box-sizing: border-box;
}

sign.json

{"usingComponents": {}
}

开发者工具内签名效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查找本机上的WIFI并查看密码。

在命令行模式下&#xff1a; 1。WIN 键 R&#xff0c;输入CMD&#xff0c;回车确认 2。在搜索框输入CMD&#xff0c;回车确认 以上的方法都可以打开命令行模式。也称终端&#xff0c;或者DOS模式。 查找本机上的WIFI密码&#xff0c;命令行如下&#xff1a; 首先&#xff…

汉诺塔问题和爬楼梯(递归)

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 个人主页&#xff1a;LaNzikinh-CSDN博客 c语言基础_LaNzikinh篮子的博客-CSDN博客 文章目录 一.爬楼梯问题二.汉诺塔问题总结 一.爬楼梯问题 假设你正…

Unity使用ToggleGroup对多个Toggle进行管理时,初始化默认选项失效的问题

问题描述&#xff1a; 在unity脚本的OnEnable中用代码设置Toggle集合中的其中一个对象的ison时&#xff0c;发现并没有根据设置发生变化。但是该Toggle的OnValueChange却发生过变化。 如果使用协程等待0.01s,那么对应组件的ison的修改才能生效&#xff0c;但是逐帧分析的话会发…

Elasticsearch:RBAC 和 RAG - 最好的朋友

作者&#xff1a;来自 Elastic Jeff Vestal 检索增强生成 (RAG) 通过提供额外的上下文或信息来增强大型语言模型 (LLM) 的知识&#xff0c;从而提高响应质量。 尽管 LLMs 拥有令人印象深刻的能力&#xff0c;但也有其局限性&#xff0c;例如无法在培训后保留新信息以及对不熟悉…

idea使用git不提示账号密码登录,而是输入token问题解决

idea 或者 webstream 等全家桶软件 使用git 推送代码时&#xff0c;不提示账号密码登录&#xff0c;而是输入token问题解决 你的代码仓库是gitlab 然后打开修改代码后推送时&#xff0c;会默认使用gitlab插件&#xff0c;所以提示数据token 解决方式就是把gitlab插件取消使用这…

ETL如何执行Java脚本

ETLCloud提供了执行 Java 脚本的方式&#xff0c;让用户能够灵活地处理数据并实现各种复杂的数据处理任务。 ETLCloud在数据处理领域的应用优势主要体现在以下几个方面&#xff1a; 灵活性&#xff1a;通过执行Java脚本&#xff0c;用户能够灵活定制数据处理逻辑&#xff0c;满…

监控异地组网怎么组网?

监控异地组网是指在不同地域的网络环境下&#xff0c;实现对监控设备的远程访问和管理。在传统的网络环境下&#xff0c;由于网络限制和设备配置等问题&#xff0c;监控设备的远程访问往往受到一定的限制和困扰。为了解决这个问题&#xff0c;引入了天联组网技术&#xff0c;实…

安卓开发--按键背景图片,按键其他属性,按键按键按下变色

前面已经介绍了一个空白按键工程的建立以及响应方式&#xff0c;可以参考这里&#xff1a;安卓开发–新建工程&#xff0c;新建虚拟手机&#xff0c;按键事件响应。 安卓开发是页面跳转是基础&#xff01;&#xff01;&#xff01;所以本篇博客介绍利用按键实现页面跳转&#…

添加对象方法

添加对象方法的方法如下&#xff0c;这是一个通用模式 注意灵活运用。

数据库调优-SQL语句优化

2. SQL语句优化 sql 复制代码 # 请问这两条SQL语句有什么区别呢&#xff1f;你来猜一猜那条SQL语句执行查询效果更好&#xff01; select id from sys_goods where goods_name华为 HUAWEI 麦芒7 魅海蓝 6G64G 全网通; ​ select id from sys_goods where goods_id14967325985…

Redis学习1——redis简介、基础

介绍 redis简介 Redis(Remote Dictonary Server) 是由Salvatore Sanfilippo开发的key-value缓存数据库&#xff0c;基于C语言开发。目前市面上&#xff0c;Redis和MongoDB是当前使用最广泛的NoSQL&#xff0c;而就Redis技术而言&#xff0c;它的性能十分优越&#xff0c;可以…

rngd: Error writing /dev/tpm0

检查数据库时发现messages中一直有rngd报错&#xff0c;rngd一直未配置&#xff0c;直接关闭了 /var/log/messages-20240414:Apr 11 04:59:49 hydb2 rngd: Error writing /dev/tpm0 /var/log/messages-20240414:Apr 12 07:31:39 hydb2 rngd: Error writing /dev/tpm0 /var/log…

shell-for循环语句练习题

1.计算从1到100所有整数的和 [rootlocalhost ~]# vim 1.sh #!/bin/bash sum0 #定义变量sum初始值为0 for i in {1..100} #for循环 i取值从1到100 do sum$[ isum ] #在每次循环中&#xff0c;变量i的值会依次取1到100的整数值。 #sum是一个累加器&#xff0c;初始值…

echarts自定义图例显示名称、数值、占比

先上代码 legend: {orient: vertical,left: 10,top:20,data: data,textStyle: {color: #9FB7D5 // 设置图例文字颜色为白色},// type: plain, // 设置图例类型为普通类型itemWidth: 10, // 设置图例项的宽度itemHeight: 10, // 设置图例项的高度formatter: function(name) {let…

Python专题:十、字典(2)

字典定义x{} get()函数 get&#xff08;参数一&#xff0c;参数二&#xff09; 参数一&#xff1a; 需要查找的关键词 参数二&#xff1a; 如果关键词不存在get返回的默认值 字典的更新 update&#xff08;&#xff09;函数&#xff0c;字典y的元素&#xff0c;去更新字…

学生管理系统初级

根据题目要求生成大纲 总结: 1.在书写时&#xff0c;考虑到了书写时id可是是abc... 类型是String&#xff0c;但在根据id获取集合中元素时 list.get() &#xff0c;get&#xff08;&#xff09;里面是int类型。 2.在书写还有一点功能并不完全&#xff0c; 2.1查找时是打印所有…

十.吊打面试官系列-Tomcat优化-通过压测Tomcat调优实战

前言 上一篇文章我们讲解了一下Tomcat底层的结构和执行原理&#xff0c;我们需要重点去掌握的是Tomcat的高内聚低耦合的设计&#xff0c;以及责任链模式&#xff0c;以及Tomcat NIO编程模式&#xff0c;这些是Tomcat比较核心的点&#xff0c;本篇文章我们将对Tomcat的参数做一…

Java学习【类与对象】

类和对象 开始我们就不讲那些把大象放冰箱需要几步来引入面向对象的例子了&#xff0c;直接上干货。 在Java中&#xff0c;类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态&#xff0c;而方法则用于描述事物可以做的事情。对象也…

Redis 支持的 Java 客户端都有哪些?

Redis 是一种高性能的键值存储系统&#xff0c;它以其快速、灵活和可扩展的特性而闻名。在 Java 开发中&#xff0c;与 Redis 交互的方式通常是通过使用 Redis 的 Java 客户端。 这些客户端提供了访问 Redis 数据库的接口&#xff0c;使开发人员能够在 Java 应用程序中轻松地使…

电脑设置在哪里打开?Window与Mac双系统操作指南

随着科技的不断发展&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;对于许多初学者来说&#xff0c;如何找到并熟悉电脑的设置界面可能是一个挑战。特别是对于那些同时使用Windows和Mac双系统的用户来说&#xff0c;更是需要一篇详尽的指南来…