中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在微信小程序中實現手指觸摸畫板

發布時間:2021-06-02 16:59:25 來源:億速云 閱讀:225 作者:Leah 欄目:web開發

本篇文章為大家展示了怎么在微信小程序中實現手指觸摸畫板,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

wxml

<!--pages/shouxieban/shouxieban.wxml-->
<view class="container">
 <view>手寫板(請在下方區域手寫內容)</view>
 <canvas  class="canvas" id="canvas" canvas-id="canvas" disable-scroll="true" bindtouchstart="canvasStart" bindtouchmove="canvasMove" bindtouchend="canvasEnd" touchcancel="canvasEnd" binderror="canvasIdErrorCallback"></canvas>
 <view class='btns canvaspd'>
 <button bindtap="cleardraw">清除畫板</button>
 <button bindtap="setSign">確定</button>
 </view>
 <image src='{{canvasimgsrc}}'></image> 
</view>

js

var context = null;// 使用 wx.createContext 獲取繪圖上下文 context
var isButtonDown = false;//是否在繪制中
var arrx = [];//動作橫坐標
var arry = [];//動作縱坐標
var arrz = [];//總做狀態,標識按下到抬起的一個組合
var canvasw = 0;//畫布寬度
var canvash = 0;//畫布高度
// pages/shouxieban/shouxieban.js
Page({
 /**
 * 頁面的初始數據
 */
 data: {
 //canvas寬高
 canvasw: 0,
 canvash: 0,
 //canvas生成的圖片路徑
 canvasimgsrc: ""
 },
 //畫布初始化執行
 startCanvas: function () {
 var that = this;
 //創建canvas
 this.initCanvas();
 //獲取系統信息
 wx.getSystemInfo({
  success: function (res) {
  canvasw = res.windowWidth - 0;//設備寬度
  canvash = canvasw;
  that.setData({ 'canvasw': canvasw });
  that.setData({ 'canvash': canvash });
  }
 });
 
 },
 //初始化函數
 initCanvas: function () {
 // 使用 wx.createContext 獲取繪圖上下文 context
 context = wx.createCanvasContext('canvas');
 context.beginPath()
 context.setStrokeStyle('#000000');
 context.setLineWidth(4);
 context.setLineCap('round');
 context.setLineJoin('round');
 },
 //事件監聽
 canvasIdErrorCallback: function (e) {
 console.error(e.detail.errMsg)
 },
 canvasStart: function (event) {
 isButtonDown = true;
 arrz.push(0);
 arrx.push(event.changedTouches[0].x);
 arry.push(event.changedTouches[0].y);
 
 },
 canvasMove: function (event) {
 if (isButtonDown) {
  arrz.push(1);
  arrx.push(event.changedTouches[0].x);
  arry.push(event.changedTouches[0].y);
 
 };
 
 for (var i = 0; i < arrx.length; i++) {
  if (arrz[i] == 0) {
  context.moveTo(arrx[i], arry[i])
  } else {
  context.lineTo(arrx[i], arry[i])
  };
 
 };
 context.clearRect(0, 0, canvasw, canvash);
 
 context.setStrokeStyle('#000000');
 context.setLineWidth(4);
 context.setLineCap('round');
 context.setLineJoin('round');
 context.stroke();
 
 context.draw(false);
 },
 canvasEnd: function (event) {
 isButtonDown = false;
 },
 //清除畫布
 cleardraw: function () {
 //清除畫布
 arrx = [];
 arry = [];
 arrz = [];
 context.clearRect(0, 0, canvasw, canvash);
 context.draw(true);
 },
 //提交簽名內容
 setSign: function () {
 var that = this;
 if (arrx.length == 0) {
  wx.showModal({
  title: '提示',
  content: '簽名內容不能為空!',
  showCancel: false
  });
  return false;
 };
 console.log("不是空的,canvas即將生成圖片")
 //生成圖片
 wx.canvasToTempFilePath({
  canvasId: 'canvas',
  success: function (res) {
  console.log("canvas可以生成圖片")
  console.log(res.tempFilePath, 'canvas圖片地址');
  that.setData({ canvasimgsrc: res.tempFilePath })
  //code 比如上傳操作
 
  },
  fail: function () {
  console.log("canvas不可以生成圖片")
  wx.showModal({
   title: '提示',
   content: '微信當前版本不支持,請更新到最新版本!',
   showCancel: false
  });
  },
  complete: function () {
 
  }
 })
 
 },
 /**
 * 生命周期函數--監聽頁面加載
 */
 onLoad: function (options) {
 //畫布初始化執行
 this.startCanvas();
 
 }
})

css

/* pages/shouxieban/shouxieban.wxss */
/*手寫板 */
page{
 background: #f6f6f6;
 padding: 5px auto
}
canvas{
 border: 1px solid #d0d0d0;
 margin: 5rpx;
 background: #f2f2f2
}

上述內容就是怎么在微信小程序中實現手指觸摸畫板,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石狮市| 临沭县| 沅江市| 应用必备| 盐山县| 北安市| 板桥市| 平山县| 通海县| 麻江县| 新田县| 绥化市| 桂东县| 达拉特旗| 安宁市| 桃江县| 海林市| 蓝山县| 中卫市| 古田县| 玛多县| 平遥县| 萝北县| 威信县| 清水县| 资讯| 庐江县| 安吉县| 广东省| 固始县| 桃源县| 昌邑市| 镇巴县| 简阳市| 许昌市| 合肥市| 芷江| 揭西县| 阳泉市| 庄浪县| 姜堰市|