小程序自定义签字板、颜色选择器组件

bao-wecom

小程序自定义签字板、颜色选择器的组件。

背景

在一次小程序项目中,需要开发一个用户签字的功能,所以就开发这个签字板的组件以及颜色选择器的组件。

案例demo

案例demo

使用方法

1. 安装组件

npm install --save bao-wecom

2. 颜色选择器使用

在页面的 json 配置文件中添加 bao-wecom-color-picker 自定义组件的配置

{
  "usingComponents": {
    "bao-wecom-color-picker": "bao-wecom/colorPicker/index"
  }
}

WXML 文件中引用 bao-wecom-color-picker

<bao-wecom-color-picker></bao-wecom-color-picker>

bao-wecom-color-picker 的属性介绍如下:

字段名类型必填描述
showBoolean控制颜色选择器是否显示
colorString设置颜色选择器的颜色,默认为#ff0000 ,仅支持rgb、hex格式
commonColorString设置常用颜色值,默认为"#000000,#ffffff,#ff0000,#ffa500,#00ff00,#0000ff,#ff00ff,#00ffff,#ffff00,#70db93,#cccccc,#999999" ,仅支持hex格式,最多12个
comfirmTextString设置确定按钮的文字,默认为确定
cancelTextString设置取消按钮的文字,默认为取消
titleString设置标题,默认为请选择

bao-wecom-color-picker 的事件介绍如下:

事件名描述
confirm点击确定时触发,返回值{hex: 16进制色值, rgb: rgb色值, hsv: hsv色值}
cancel点击取消时触发

3. 签字板使用

在页面的 json 配置文件中添加 bao-wecom-signature 自定义组件的配置

{
  "usingComponents": {
    "bao-wecom-signature": "bao-wecom/signature/index"
  },
  "pageOrientation": "landscape",//横屏
  "navigationStyle": "custom" //自定义头
}

WXML 文件中引用 bao-wecom-signature

<bao-wecom-signature></bao-wecom-signature>

bao-wecom-signature 的属性介绍如下:

字段名类型必填描述
titleString签字版标题
colorString设置笔画线条的颜色,默认为#1A1A1A ,hex格式
boardColorString设置画板的颜色,默认为#ffffff ,hex格式
backgroundColorString设置背景的颜色,默认为#ffa500 ,hex格式
sizeNumber设置笔画线条的粗细,默认为8
fileTypeString设置导出图片的格式,默认为png
qualityNumber生成图片的质量,目前仅对 jpg 有效。取值范围为 (0, 1],不在范围内时当作 1.0 处理。
buttonListArray设置显示的按钮,默认为[“cancel”, “setting”, “reset”, “preview”, “save”, “confirm”],cancel:取消按钮,setting:设置按钮,reset:重写按钮,preview:预览按钮,save:保存按钮,confirm:确认按钮。

bao-wecom-color-picker 的事件介绍如下:

事件名描述
confirm点击确定时触发,返回值{ path: 图片本地路径, width: 宽度, height: 高度 }
cancel点击取消时触发
微信小程序中实现签字的方法如下: 1. 在wxml文件中添加canvas标签,设置宽高和id属性,用于后续操作。 ```html <canvas canvas-id="myCanvas" style="width: 100%; height: 100%;"></canvas> ``` 2. 在js文件中获取canvas对象,设置画笔颜色、线条宽度等属性,并监听touchstart、touchmove、touchend事件,实现手写签字功能。 ```javascript // 获取canvas对象 const ctx = wx.createCanvasContext('myCanvas') // 设置画笔颜色、线条宽度等属性 ctx.setStrokeStyle('black') ctx.setLineWidth(3) ctx.setLineCap('round') ctx.setLineJoin('round') // 监听touchstart、touchmove、touchend事件,实现手写签字功能 let startX = 0 let startY = 0 let isTouchMove = false wx.createSelectorQuery().select('#myCanvas').fields({ node: true, size: true }).exec((res) => { const canvas = res[0].node const dpr = wx.getSystemInfoSync().pixelRatio canvas.width = res[0].width * dpr canvas.height = res[0].height * dpr ctx.scale(dpr, dpr) canvas.addEventListener('touchstart', (e) => { startX = e.touches[0].x startY = e.touches[0].y isTouchMove = false }) canvas.addEventListener('touchmove', (e) => { const endX = e.touches[0].x const endY = e.touches[0].y ctx.moveTo(startX, startY) ctx.lineTo(endX, endY) ctx.stroke() startX = endX startY = endY isTouchMove = true }) canvas.addEventListener('touchend', (e) => { if (!isTouchMove) { ctx.beginPath() ctx.arc(startX, startY, 1.5, 0, 2 * Math.PI) ctx.fill() } }) }) ``` 3. 在wxml文件中添加保存按钮,点击按钮后将canvas转换为图片并保存到本地相册。 ```html <button type="primary" bindtap="saveImage">保存</button> ``` ```javascript // 点击保存按钮,将canvas转换为图片并保存到本地相册 saveImage() { wx.canvasToTempFilePath({ canvasId: 'myCanvas', success: (res) => { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: () => { wx.showToast({ title: '保存成功', icon: 'success', duration: 2000 }) }, fail: () => { wx.showToast({ title: '保存失败', icon: 'none', duration: 2000 }) } }) } }) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值