微信小程序canvas手写签字

简介: 微信小程序canvas手写签字
<view style="width: 90%;height: 260px;background: #f5f5f5;margin: auto;">
  <canvas
  type="2d"
  id="myCanvas"
  style="width: 100%; height: 100%;"
  bindtouchstart="start"
  bindtouchmove="move"
  bindtouchend="end"
></canvas>
</view>
const app = getApp()
 
Page({
  data: {
    ctx:'',
  },
 
  onLoad: function () {
    this.initcanvas();
  },
  initcanvas(){ //初始化画布
    const query = wx.createSelectorQuery()
    query.select('#myCanvas')
      .fields({ node: true, size: true })
      .exec((res) => {
        const canvas = res[0].node
        const ctx = canvas.getContext('2d')
        const dpr = wx.getSystemInfoSync().pixelRatio;//缩放级别
        canvas.width = res[0].width * dpr
        canvas.height = res[0].height * dpr
        ctx.scale(dpr, dpr)
        ctx.lineGap = 'round';
        ctx.lineJoin = 'round';
        ctx.lineWidth = 5; // 字体粗细
        this.setData({ 
          ctx:ctx, 
          canvas:canvas 
        })
      })
  },
  start(e){
    this.data.ctx.beginPath(); // 开始创建一个路径,如果不调用该方法,最后无法清除画布
    this.data.ctx.moveTo(e.changedTouches[0].x,e.changedTouches[0].y) //移动路径开始点 x,y
  },
  move(e){
    this.data.ctx.lineTo(e.changedTouches[0].x,e.changedTouches[0].y);//添加直线路径x,y
    this.data.ctx.stroke(); //填充
  },
  end(){
    
  },
})

要在微信小程序中使用Canvas手写签字功能,你可以按照以下步骤进行操作:

1. 在小程序的页面中添加一个Canvas组件,类似于以下代码:

```html

<canvas id="canvas" canvas-id="myCanvas" style="width: 100%; height: 100%;"></canvas>

```

2. 在页面的js文件中,获取Canvas组件的上下文对象,然后进行相关的操作。例如,以下是一个简单的手写签字功能的示例代码:

```javascript

Page({

 data: {

   context: null,

   isDrawing: false,

   lastX: 0,

   lastY: 0

 },

 onLoad: function () {

   // 获取Canvas上下文对象

   this.data.context = wx.createCanvasContext('myCanvas');

 },

 touchstart: function (e) {

   // 记录手指触摸的初始位置,并开始绘制

   this.data.lastX = e.touches[0].x;

   this.data.lastY = e.touches[0].y;

   this.data.context.beginPath();

   this.data.isDrawing = true;

 },

 touchmove: function (e) {

   // 绘制手写轨迹

   if (this.data.isDrawing) {

     this.data.context.moveTo(this.data.lastX, this.data.lastY);

     this.data.context.lineTo(e.touches[0].x, e.touches[0].y);

     this.data.context.stroke();

     this.data.lastX = e.touches[0].x;

     this.data.lastY = e.touches[0].y;

     this.data.context.draw(true);

   }

 },

 touchend: function () {

   // 结束绘制

   this.data.isDrawing = false;

 },

 clearCanvas: function () {

   // 清空Canvas

   this.data.context.clearRect(0, 0, 300, 300);

   this.data.context.draw(true);

 }

})

```

3. 在wxml文件中,绑定Canvas的触摸事件,例如:

```html

<canvas id="canvas" canvas-id="myCanvas" style="width: 100%; height: 100%;" bindtouchstart="touchstart" bindtouchmove="touchmove" bindtouchend="touchend"></canvas>

<button bindtap="clearCanvas">清除</button>

```

这样,你就可以在小程序中实现手写签字功能了。用户在Canvas上手指触摸并滑动时,会绘制出手写轨迹;点击清除按钮时,会清除Canvas上的内容。

相关文章
|
前端开发 小程序
微信小程序canvas画布绘制base64图片并保存图片到相册中
微信小程序canvas画布绘制base64图片并保存图片到相册中
549 0
|
前端开发 小程序
微信小程序绘制canvas时在不同 设备上的大小不同的问题
微信小程序绘制canvas时在不同 设备上的大小不同的问题
653 0
|
前端开发 小程序 JavaScript
小程序 canvas 生成海报 一次搞掂
小程序 canvas 生成海报 一次搞掂
325 1
|
前端开发 小程序 JavaScript
微信小程序 canvas 备忘
微信小程序 canvas 备忘
210 0
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
1076 0
|
前端开发 小程序
【微信小程序5】利用canvas实现纯色背景抠图功能
【微信小程序5】利用canvas实现纯色背景抠图功能
991 0
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
3806 7
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
4159 1
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
2418 7
|
人工智能 自然语言处理 小程序
技术小白如何利用DeepSeek半小时开发微信小程序?
通过通义灵码的“AI程序员”功能,即使没有编程基础也能轻松创建小程序或网页。借助DeepSeek V3和R1满血版模型,用户只需用自然语言描述需求,就能自动生成代码并优化程序。例如,一个文科生仅通过描述需求就成功开发了一款记录日常活动的微信小程序。此外,通义灵码还提供智能问答模式,帮助用户解决开发中的各种问题,极大简化了开发流程,让普通人的开发体验更加顺畅。
3538 11
技术小白如何利用DeepSeek半小时开发微信小程序?