微信小程序 canvas 从后端获取数据 绘图并保存本地

一、wxml页面,wxss我就不写了 自己调试

<view class="seeTicket" wx:if="{{lookTicket}}">
  <view class="colse" bindtap="colse"><text>X</text></view>
  <view class="canBox">
    <canvas canvas-id="mycanvas"
      style="display:inline-block;border:1px solid #CCC; width:300px;height:200px;border-radius:20rpx;background:#fff;"></canvas>
    <button class="generate" bindtap="generate"
      style="margin-top:20rpx;width:140rpx;height:70rpx;line-height:56rpx;font-size:24rpx;padding:8rpx;background:#32A0DC;">保存票证</button>
  </view>
</view>

二、js,其中的变量是后端返回的数据

Page({

  /**
   * 页面的初始数据
   */
  data: {
    
    lookTicket: false
  },

seeTicket:function (e) {
    var that = this,
    item = e.currentTarget.dataset.item;
    console.log(item)
    that.setData({
      lookTicket: true
    })
    wx.showLoading({
      title: '票证生成中',
    })
    setTimeout(function () {
      var ctx = wx.createCanvasContext('mycanvas'),
      fontWidth = ctx.measureText('田').width;//获取文本的宽度
      ctx.setFillStyle('#000') //文字颜色:默认黑色
      ctx.setFontSize(14) //设置字体大小,默认10
      ctx.fillText('支付凭证', 135, 10 + fontWidth) //绘制文本
      ctx.fillText('支付金额:', 40, 50 + fontWidth)
      ctx.fillText(item.fee+'元', 115, 50 + fontWidth)
      ctx.fillText('订单编号:', 40, 80 + fontWidth)
      ctx.fillText(item.ordersn, 115, 80 + fontWidth)
      ctx.fillText('支付时间:', 40, 110 + fontWidth)
      ctx.fillText(item.addtime, 115, 110 + fontWidth)
      ctx.fillText('收款商家:', 40, 140 + fontWidth)
      ctx.fillText(item.store_name, 115, 140 + fontWidth)
      ctx.fillText('订单状态:', 40, 170 + fontWidth)
      if(item.is_refund == 0){
       ctx.fillText('支付成功', 115, 170 + fontWidth)
      }else{
       ctx.fillText('已退款'+item.refund_money+'元', 115, 170 + fontWidth)
      }
      ctx.draw()
    wx.hideLoading()
    }, 1000)
  },
  generate: function(){
    wx.canvasToTempFilePath({
      canvasId: 'mycanvas',
      fileType:'jpg',
      success(res) {
        wx.authorize({
          scope: 'scope.writePhotosAlbum',
          success() {
            wx.saveImageToPhotosAlbum({
              filePath: res.tempFilePath,
              success() {
                wx.showToast({
                  title: '图片保存成功'
                })
              }
            }) 
          }
        })
      }
    }, this)
    this.setData({
      lookTicket: false
    })
  },

 colse:function(){
    this.setData({
      lookTicket: false
    })
  }
})

三、不喜勿喷,若有问题请提出改进

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值