微信小程序canvas寫(xiě)字板效果及實(shí)例
微信小程序canvas寫(xiě)字板效果及實(shí)例
寫(xiě)字板效果:書(shū)寫(xiě)文字,畫(huà)板重置,導(dǎo)出圖片,導(dǎo)出圖片前判斷是否書(shū)寫(xiě)內(nèi)容


app.json:
添加一個(gè)路由:"pages/canvas/canvas"
{
"pages":[
"pages/index/index",
"pages/logs/logs",
"pages/canvas/canvas"
],
"window":{
"navigationBarBackgroundColor": "#ea6a46",
"navigationBarTextStyle":"white",
"navigationBarTitleText": "寫(xiě)字板",
"backgroundTextStyle":"dark",
"backgroundColor":"white",
"enablePullDownRefresh":"true"
}
}
然后就是:
canvas.wxml:
<!--pages/canvas/canvas.wxml--> <canvas class="canvas" id="canvas" canvas-id="canvas" disable-scroll="true" bindtouchstart="canvasStart" bindtouchmove="canvasMove" bindtouchend="canvasEnd" touchcancel="canvasEnd" binderror="canvasIdErrorCallback"></canvas> <button type="default" bindtap="cleardraw">清除畫(huà)布</button> <button type="default" bindtap="getimg">導(dǎo)出圖片</button>
canvas.js:
// canvas 全局配置
var context = null;// 使用 wx.createContext 獲取繪圖上下文 context
var isButtonDown = false;
var arrx = [];
var arry = [];
var arrz = [];
var canvasw = 0;
var canvash = 0;
//獲取系統(tǒng)信息
wx.getSystemInfo({
success: function (res) {
canvasw = res.windowWidth;//設(shè)備寬度
canvash = res.windowWidth*7/15;
}
});
//注冊(cè)頁(yè)面
Page({
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);
//context.moveTo(event.changedTouches[0].x, event.changedTouches[0].y);
},
canvasMove: function (event) {
if (isButtonDown) {
arrz.push(1);
arrx.push(event.changedTouches[0].x);
arry.push(event.changedTouches[0].y);
// context.lineTo(event.changedTouches[0].x, event.changedTouches[0].y);
// context.stroke();
// context.draw()
};
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.stroke();
context.draw(true);
},
canvasEnd: function (event) {
isButtonDown = false;
},
cleardraw: function () {
//清除畫(huà)布
arrx = [];
arry = [];
arrz = [];
context.clearRect(0, 0, canvasw, canvash);
context.draw(true);
},
getimg: function(){
if (arrx.length==0){
wx.showModal({
title: '提示',
content: '簽名內(nèi)容不能為空!',
showCancel: false
});
return false;
};
//生成圖片
wx.canvasToTempFilePath({
canvasId: 'canvas',
success: function (res) {
console.log(res.tempFilePath);
//存入服務(wù)器
wx.uploadFile({
url: 'a.php', //接口地址
filePath: res.tempFilePath,
name: 'file',
formData: { //HTTP 請(qǐng)求中其他額外的 form data
'user': 'test'
},
success: function (res) {
console.log(res);
},
fail: function (res) {
console.log(res);
},
complete: function (res) {
}
});
}
})
},
/**
* 頁(yè)面的初始數(shù)據(jù)
*/
data: {
src: ""
},
/**
* 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
*/
onLoad: function (options) {
// 使用 wx.createContext 獲取繪圖上下文 context
context = wx.createCanvasContext('canvas');
context.beginPath()
context.setStrokeStyle('#000000');
context.setLineWidth(4);
context.setLineCap('round');
context.setLineJoin('round');
}
})
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
JS算法題解數(shù)組刪除重復(fù)項(xiàng)方法示例
這篇文章主要為大家介紹了JS算法題解數(shù)組刪除重復(fù)項(xiàng)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
PerformanceObserver自動(dòng)獲取首屏?xí)r間實(shí)現(xiàn)示例
今天給大家介紹一個(gè)非常好用的瀏覽器api:?PerformanceObserver?,?我們可以用它來(lái)獲取首屏、白屏的時(shí)間,就不用再麻煩地手動(dòng)去計(jì)算了2022-07-07
JavaScript前端分頁(yè)實(shí)現(xiàn)示例
這篇文章主要為大家介紹了JavaScript前端分頁(yè)實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
如何編寫(xiě)高質(zhì)量 JavaScript 代碼
如果要編寫(xiě)出高質(zhì)量的 JavaScript 代碼,可以從以下三個(gè)方面去考慮。分別是:易閱讀的代碼、高性能的代碼、健壯性的代碼。下面我將分別對(duì)這三個(gè)方面進(jìn)行闡述。需要的朋友可以參考一下2021-09-09
微信小程序 支付功能開(kāi)發(fā)錯(cuò)誤總結(jié)
這篇文章主要介紹了微信小程序 支付功能開(kāi)發(fā)錯(cuò)誤總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-02-02
JavaScript實(shí)現(xiàn)文本轉(zhuǎn)換為文件示例詳解
這篇文章主要為大家介紹了JavaScript實(shí)現(xiàn)文本轉(zhuǎn)換為文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
微信小程序(應(yīng)用號(hào))簡(jiǎn)單實(shí)例應(yīng)用及實(shí)例詳解
這篇文章主要介紹了微信小程序(應(yīng)用號(hào))簡(jiǎn)單實(shí)例應(yīng)用的相關(guān)資料,需要的朋友可以參考下2016-09-09
JS屬性scrollTop?clientHeight?scrollHeight理解學(xué)習(xí)
這篇文章主要為大家介紹了JS屬性scrollTop?clientHeight?scrollHeight理解學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

