微信小程序实现简单手写签名组件的方法实例_第1页
微信小程序实现简单手写签名组件的方法实例_第2页
微信小程序实现简单手写签名组件的方法实例_第3页
微信小程序实现简单手写签名组件的方法实例_第4页
微信小程序实现简单手写签名组件的方法实例_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第微信小程序实现简单手写签名组件的方法实例目录背景:需求:效果一、思路

二、实现

1.页面与样式

2.初始化

3.点击时

4.签名时

三、总结

背景:

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

需求:

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

需要组件化。

效果

一、思路

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

二、实现

1.页面与样式

wxml

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

view

view

van-buttonsize="small"bind:click="clearCanvas"清空/van-button

/view

view

canvas

disable-scroll="{{true}}"

id="handWriting"

bindtouchstart="scaleStart"

bindtouchmove="scaleMove"

bindtouchend="scaleEnd"

bindtap="mouseDown"

type="2d"

/canvas

/view

/view

wxss

.btnList{

width:95%;

margin:0auto;

.handWriting{

background:#fff;

width:95%;

height:80vh;

margin:0auto

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(){

letcanvasName=this.data.canvasName;

letquery=wx.createSelectorQuery().in(this);//获取自定义组件的SelectQuery对象

query.select(canvasName)

.fields({node:true,size:true})

.exec((res)={

constcanvas=res[0].node;

constctx=canvas.getContext('2d');

//获取设备像素比

constdpr=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({

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论