返回顶部
首页 > 资讯 > 精选 >uniapp怎么实现微信小程序的电子签名效果
  • 452
分享到

uniapp怎么实现微信小程序的电子签名效果

2023-06-30 13:06:59 452人浏览 泡泡鱼
摘要

今天小编给大家分享一下uniapp怎么实现微信小程序的电子签名效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开发框架:u

今天小编给大家分享一下uniapp怎么实现微信小程序的电子签名效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    开发框架:uniapp
    开发语言Vue2
    展示平台微信小程序(实际可以兼容多个平台)

    标签和样式没什么好说的,这里绘制了简单的页面,见下图:

    uniapp怎么实现微信小程序的电子签名效果

    1、标签和样式

    <template><view class="page-content"><view class="fORM"><view class="form-content"><canvas class="form-content__canvas" canvas-id="canvas_sign" @touchstart="touchstart"@touchmove="touchmove" @touchend="touchend" disable-scroll="true"></canvas></view><view class="form-footer"><button class="form-footer__reset" @click="autographClick(1)">重置</button><button class="form-footer__save" @click="autographClick(2)">保存</button><button class="form-footer__preview" @click="autographClick(3)">预览</button></view></view></view></template><style lang="sCSS" scoped>@function tovmin($rpx) {@return #{$rpx * 100 / 750}vmin;}.page-content {width: 100vw;height: 100vh;.form {display: flex;flex-direction: column;width: 100%;height: 100%;.form-content {width: 100%;height: 100%;&__canvas {height: calc(100vh - tovmin(20) - tovmin(120) - constant(safe-area-inset-bottom));height: calc(100vh - tovmin(20) - tovmin(120) - env(safe-area-inset-bottom));width: 100vw;}}.form-footer {padding-top: tovmin(20);height: calc(tovmin(120) + constant(safe-area-inset-bottom));height: calc(tovmin(120) + env(safe-area-inset-bottom));width: 100%;display: flex;flex-direction: row;background: #FFFFFF;box-shadow: 0 tovmin(4) tovmin(20) tovmin(2) rgba(183, 183, 183, 0.20);button {width: 20vw;height: tovmin(88);line-height: tovmin(88);border-radius: tovmin(48);text-align: center;font-size: tovmin(36);font-weight: bold;}button::after {border: none;}&__reset {color: #008AFE;border: tovmin(1) solid #008AFE;}&__save {background-image: linear-gradient(135deg, #1BC5FF 0%, #008AFE 100%);}&__preview {color: #008AFE;border: tovmin(1) solid #008AFE;}}}}</style>

    2、横屏切换

    到【pages.JSON】文件中添加横屏切换配置
    注意:不同的平台横屏切换将有所不一样。这里是针对微信小程序的横屏适配

    {"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages{"path": "pages/index/index","style": {"navigationBarTitleText": "亲笔签名",//导航栏标题"pageOrientation": "landscape",//切换横屏"enablePullDownRefresh": false,//关闭下拉刷新"disableScroll": true // 整体页面禁止上下滑动}}],"globalStyle": {"navigationBarTextStyle": "black","navigationBarBackgroundColor": "#FFFFFF","backgroundColor": "#f5f5f5","navigationStyle": "default", // default/custom。custom即取消默认的原生导航栏"mp-alipay": {"transparentTitle": "always","titlePenetrate": "YES"}}}

    然后是绘制逻辑处理,注意点在代码中备注:

    3、绘图

    3.1、初始化数据会吧?

    data() {return {canvasCtx: '', //绘图图像points: [], //路径点集合hasSign: false,isInit: false,}},onLoad(query) {this.canvasCtx = uni.createCanvasContext('canvas_sign', this) //创建绘图对象//设置画笔样式this.canvasCtx.lineWidth = 6// 设置线条的端点样式this.canvasCtx.lineCap = 'round'// 设置线条的交点样式this.canvasCtx.lineJoin = 'round'},

    3.2、触摸开始时获取起点,会吧?

    touchstart: function(e) {if (!this.isInit) {this.isInit = truethis.autographClick(1);}let startX = e.changedTouches[0].xlet startY = e.changedTouches[0].ylet startPoint = {X: startX,Y: startY}this.points.push(startPoint)//每次触摸开始,开启新的路径this.canvasCtx.beginPath()},

    3.3、触摸移动获取路径点,会吧?

    touchmove: function(e) {let moveX = e.changedTouches[0].xlet moveY = e.changedTouches[0].ylet movePoint = {X: moveX,Y: moveY}this.points.push(movePoint) //存点let len = this.points.lengthif (len >= 2) {this.draw() //绘制路径}},

    3.4、触摸结束,将未绘制的点清空防止对后续路径产生干扰,简单吧?

    touchend: function() {this.points = []this.canvasCtx.draw(true)},

    3.5、绘制笔迹,没得问题吧?

    这里有几个注意点:

    为保证笔迹实时显示,必须在移动的同时绘制笔迹
    2.为保证笔迹连续,每次从路径集合中区两个点作为起点(moveTo)和终点(lineTo)
    3.将上一次的终点作为下一次绘制的起点(即清除第一个点)

    draw: function() {let point1 = this.points[0]let point2 = this.points[1]this.points.shift()this.canvasCtx.moveTo(point1.X, point1.Y)this.canvasCtx.lineTo(point2.X, point2.Y)this.canvasCtx.stroke()this.canvasCtx.draw(true)this.hasSign = true},

    4、扫尾处理

    上面的实现了,说明就可以签下你大名了。这里扫尾工作(按钮点击功能实现)只是景上添花。根据实际情况不一定要做。

    <script>export default {methods: {// 底部按钮点击操作autographClick(type) {let that = thisif (type === 1) {//清空画布this.hasSign = falseuni.getSystemInfo({success: function(res) {let canvas = uni.createSelectorQuery().select('.form-content__canvas')canvas.boundinGClientRect().exec(function(data) {console.log('canvas', data)console.log('canvas wh:' + data[0].width + 'X' + data[0].height)let canvasw = Math.ceil(data[0].width)let canvash = Math.ceil(data[0].height)that.canvasCtx.fillStyle = '#fff'that.canvasCtx.fillRect(0, 0, canvasw, canvash)that.canvasCtx.draw(true)})}})} else {if (!this.hasSign) {uni.showToast({title: '签名不能为空',icon: 'none',duration: 2000})return}uni.getSystemInfo({success: function(res) {let canvas = uni.createSelectorQuery().select('.form-content__canvas')canvas.boundingClientRect().exec(function(data) {console.log('canvas saveSign:', data[0].width + 'X' + data[0].height)let canvasw = Math.ceil(data[0].width)let canvash = Math.ceil(data[0].height)uni.canvasToTempFilePath({destWidth: canvasw,destHeight: canvash,fileType: 'jpg',canvasId: 'canvas_sign',success: function(res) {console.log('图片导出成功:', res)let path = res.tempFilePath// 保存图片if (type === 2) {that.uploadPic(path)} else if (type === 3) {// 预览图片uni.previewImage({urls: [path]})}},fail: (err) => {// Http://tmp/2LVQyvzddk2R820a9009dff43323D8e7fc9ef7a8d076.jpgconsole.log('图片导出失败:', err)}})})}})}},// 图片上传处理uploadPic(tempFile) {// 1、将本地图片上传到服务器(假装是七牛云服务器)// 2、将七牛云返回的链接,上传到我们的服务器平台console.log("------:", tempFile);uni.showLoading({title: '正在上传中...'})setTimeout(() => {uni.showToast({title: '假装签名上传成功',duration: 2000,icon: 'none'});}, 1000);}}}</script>

    以上就是“uniapp怎么实现微信小程序的电子签名效果”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: uniapp怎么实现微信小程序的电子签名效果

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

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

    猜你喜欢
    • uniapp怎么实现微信小程序的电子签名效果
      今天小编给大家分享一下uniapp怎么实现微信小程序的电子签名效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开发框架:u...
      99+
      2023-06-30
    • uniapp实现微信小程序的电子签名效果(附demo)
      目录1、标签和样式2、横屏切换3、绘图3.1、初始化数据会吧?3.2、触摸开始时获取起点,会吧?3.3、触摸移动获取路径点,会吧?3.4、触摸结束,将未绘制的点清空防止对后续路径产生...
      99+
      2024-04-02
    • 微信小程序怎么实现电子签名
      要在微信小程序中实现电子签名,可以按照以下步骤操作:1. 在小程序页面中创建一个画布(canvas)组件,用于绘制签名。可以使用 `...
      99+
      2023-08-18
      微信小程序
    • 微信小程序实现电子签名
      本文实例为大家分享了微信小程序实现电子签名的具体代码,供大家参考,具体内容如下 <view class="sign-contain"> <view class...
      99+
      2024-04-02
    • 微信小程序怎么用canvas实现电子签名
      这篇文章主要介绍“微信小程序怎么用canvas实现电子签名”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么用canvas实现电子签名”文章能帮助大家解决问题。具体代码如下<view...
      99+
      2023-07-02
    • 微信小程序用canvas实现电子签名
      本文实例为大家分享了微信小程序用canvas实现电子签名的具体代码,供大家参考,具体内容如下 <view class="sign-contain">     <vi...
      99+
      2024-04-02
    • 微信小程序实现摇筛子效果
      本文实例为大家分享了微信小程序实现摇筛子效果的具体代码,供大家参考,具体内容如下 1.效果图: 2.HTML代码: <!--pages/game/game.wxml--&...
      99+
      2024-04-02
    • 微信小程序怎么实现手写签名
      本文小编为大家详细介绍“微信小程序怎么实现手写签名”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序怎么实现手写签名”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在微信小程序上实现手写签名,获取canva...
      99+
      2023-06-29
    • 怎么用JavaScript实现电子签名效果
      本篇内容主要讲解“怎么用JavaScript实现电子签名效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用JavaScript实现电子签名效果”吧!步骤一:创建HTML和CSS首先,我们需...
      99+
      2023-07-05
    • 微信小程序实现手写签名
      本文实例为大家分享了微信小程序实现手写签名的具体代码,供大家参考,具体内容如下 本示例具备的功能: 1、笔迹绘制 2、笔迹清空 以下是js代码: var content = null...
      99+
      2024-04-02
    • 微信小程序弧线效果怎么实现
      这篇文章主要讲解了“微信小程序弧线效果怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序弧线效果怎么实现”吧!目标效果:我们所有元素默认的都是长方形的元素,所以如果想要实现这个...
      99+
      2023-06-26
    • 微信小程序canvas实现手写签名
      本文实例为大家分享了微信小程序canvas实现手写签名的具体代码,供大家参考,具体内容如下 很多时候,程序中需要用到签名的功能,附上源码(微信小程序) .wxml <view...
      99+
      2024-04-02
    • 微信小程序实现手写签名(签字版)
      本文实例为大家分享了微信小程序实现手写签名的具体代码,供大家参考,具体内容如下 公司近期有个需要用户签名的功能,就用小程序canvas写了个 wxml <view class...
      99+
      2024-04-02
    • 微信小程序怎么实现竖排slider效果
      这篇文章主要介绍了微信小程序怎么实现竖排slider效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序怎么实现竖排slider效果文章都会有所收获,下面我们一起来看看吧。js:Component({&...
      99+
      2023-07-02
    • 微信小程序怎么实现吸顶盒效果
      本文小编为大家详细介绍“微信小程序怎么实现吸顶盒效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序怎么实现吸顶盒效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。html部分 <!--...
      99+
      2023-07-02
    • 微信小程序uniapp实现左滑删除效果(完整代码)
      微信小程序uniapp实现左滑删除效果 实现效果 1,列表中侧滑删除 2,删除不同时存在 3,上下滑动与侧滑删除不影响 在本页面引入组件并使用 (文件在文章的最下方附上) 在需要...
      99+
      2024-04-02
    • 微信小程序如何实现手写签名
      这篇文章主要介绍了微信小程序如何实现手写签名的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序如何实现手写签名文章都会有所收获,下面我们一起来看看吧。效果wxml<view class=&...
      99+
      2023-07-02
    • 微信小程序实现横屏手写签名
      本文实例为大家分享了微信小程序实现横屏手写签名的具体代码,供大家参考,具体内容如下 1.关键配置: "pageOrientation": "landsc...
      99+
      2024-04-02
    • 微信小程序中怎么实现电子商务功能
      要在微信小程序中实现电子商务功能,可以按照以下步骤进行: 注册微信小程序商户账号:首先需要在微信支付平台注册一个商户账号,获取商...
      99+
      2024-04-09
      微信小程序
    • 微信小程序实现常见的user效果
      这篇“微信小程序实现常见的user效果”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“微信小程序实现常见的user效果”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让...
      99+
      2023-06-26
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作