知è˜(shÃ)
ä¸ç®¡æ˜¯ç¶²(wÇŽng)站,軟件還是å°ç¨‹åºï¼Œéƒ½è¦ç›´æŽ¥æˆ–間接能為您產(chÇŽn)生價(jià )值,我們?cè)è°§éžç¬ƒæ¹Ÿæ›ˆX(jué)表ç¾(xià n)çš„åŒæ™‚(shÃ),更å´(cè)é‡äºŽåŠŸèƒ½çš„ä¾¿æ·ï¼Œç‡Ÿ(yÃng)銷的便利,é‹(yùn)營(yÃng)的高效,讓網(wÇŽng)ç«™æˆç‚ºç‡Ÿ(yÃng)銷工具,讓軟件能切實(shÃ)æå‡ä¼æ¥(yè)å…§(nèi)éƒ¨ç®¡ç†æ°´å¹³å’Œæ•ˆçŽ‡ã€‚å„ª(yÅu)秀的程åº?yà n)楹笃è°î¥?jÃ)æä¾›ä¾¿æ·çš„æ”¯æŒï¼
您當(dÄng)å‰ä½ç½®>首é (yè) » æ–°èžè³‡è¨Š » å°ç¨‹åºç›¸é—œ(guÄn) >
å°ç¨‹åºcanvasç”Ÿæˆæµ·å ±(bà o)
發(fÄ)表時(shÃ)間:2020-9-29
發(fÄ)布人:葵宇科技
ç€è¦½æ¬¡æ•¸(shù):95
å°ç¨‹åºcanvasç”Ÿæˆæµ·å ±(bà o)
- 先看看效果圖 以下↓
- ä½¿ç”¨å ´(chÇŽng)景
- 剿
- wxml
- js
- drawCanvas.js
- 在Canvas.js引入drawCanvas.js
- å¸Œæœ›å¤§å®¶èƒ½å¤ ç”¨åˆ°!
å¦‚æžœæ–‡ç« ä¸æœ‰å‡ºç¾(xià n)ç´•æ¼ã€éŒ¯(cuò)誤之處,é‚„è«‹(qÇng)看到的å°ä¼™ä¼´å¤šå¤šæŒ‡æ•™,先行è¬éŽ(guò)
先看看效果圖 以下↓
ä½¿ç”¨å ´(chÇŽng)景
- 分享å°ç¨‹åºçš„,繪制分享圖
- ä¸åŒå•†å“分享的是åŽç”Ÿæˆä¸åŒçš„圖片,æ¯å€‹(gè)商å“的信æ¯åœ–片ä¸åŒ,å°ç¨‹åºé»˜èª(rèn)分享的是é (yè)é¢é»˜èª(rèn)截圖
- å°ç¨‹åºåˆ†äº«æœ‹å‹åœˆ,ç”Ÿæˆæµ·å ±(bà o)
剿
- æ ¹æ“š(jù)上é¢åœ–片需è¦ä¸€å€‹(gè)背景圖片(ä¸Šé¢æ˜¯750*777),大家坿 ¹æ“š(jù)實(shÃ)際情æ³é€²(jìn)行改變
- 本文用的是å°ç¨‹åºcanvas最新api,大家å¯ä»¥é–±è®€å°ç¨‹åºcanvas文檔
wxml
<canvas style="width:750px;height:777px;position:absolute;top:0px;left:-2000px;" id="canvas" type="2d"></canvas>
js
drawCanvas.js
[å–®ç¨(dú)創(chuà ng)建drawCanvas.jså˜æ”¾ä¸€äº›å…¬å…±å‡½æ•¸(shù),里é¢å°è£äº†åœ–ç‰‡æ¸²æŸ“æ–‡å—æ›è¡Œç‰ä¸€äº›æ–¹æ³•(由于畫(huà )布無(wú)法直接使用網(wÇŽng)絡(luò)圖片,æ‰€ä»¥éœ€è¦ wx.downloadFile或者wx.getImageInfo把它下載回來(lái)æ‰èƒ½ä½¿ç”¨,本文使用wx.downloadFile)]
export default {
// 下載圖片函數(shù)
downloadImg(img) {
return new Promise((resolve, reject) => {
//將網(wÇŽng)絡(luò)圖片轉(zhuÇŽn)æˆæœ¬åœ°è·¯å¾‘
// wx.getImageInfo({
// src: img,
// success: function (res) {
// resolve(res.path)
// }
// })
//方法二
wx.downloadFile({
url: img,
success: (res) => {
let cover = res.tempFilePath;
resolve(cover)
},
fail: (err) => {
reject(err)
},
})
})
},
//圖片渲染
drawImage(canvas, ctx, imgUrl, x, y, w, h) {
ctx.save();
const img = canvas.createImage();
img.src = imgUrl
img.onload = () => ctx.drawImage(img, x, y, w, h);
ctx.closePath();
},
//æ–‡å—æ›è¡Œ
drawTxt: function (ctx, _str, _x, _y, _total, _lineh, _linenum) {
if (_str == "" || _str == undefined) {
return;
}
var total = _total ? _total : 15; //æ¯è¡Œå—?jÇn)?shù)(數(shù)å—ç®—åŠå€‹(gè))
var lineH = _lineh ? _lineh : 20; //行間è·
var lineNum = _linenum ? _linenum : 4; //最大顯示行數(shù)
/*
拆解å—符串到數(shù)組,按行,æ¯è¡Œ15個(gè)(判斷數(shù)å—å åŠå€‹(gè),å…¶ä»–å 1個(gè))
*/
var lineArray = [];
var len = 0; //數(shù)å—ç®—åŠå€‹(gè),䏿–‡ç®—一個(gè)
for (var i = 0; i < _str.length; i++) {
var line = '';
if (Math.ceil(len) % total == 0) {
if (lineArray[lineArray.length - 1] != "") {
lineArray.push("");
}
}
var index = Math.floor(len / total); //
lineArray[index] = lineArray[index] + _str[i];
if (!isNaN(_str[i])) {
//是數(shù)å—
len = len + 0.5;
} else {
len = len + 1;
}
}
for (var i = 0; i < lineArray.length; i++) {
var t_str = lineArray[i];
if (lineArray.length > lineNum && i == (lineNum - 1)) {
//如果總行數(shù)大于è¨(shè)定的行數(shù),則到最大è¨(shè)定行時(shÃ),åŠ çœç•¥è™Ÿ(hà o),退出
t_str = t_str + '...'
ctx.fillText(t_str, _x, _y + lineH * i);
break;
} else {
ctx.fillText(t_str, _x, _y + lineH * i);
}
}
},
//è£åˆ‡åœ“è§’
drawRoundRect: function (cxt, x, y, width, height, radius) {
cxt.save()
cxt.beginPath();
cxt.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 3 / 2);
cxt.lineTo(width - radius + x, y);
cxt.arc(width - radius + x, radius + y, radius, Math.PI * 3 / 2, Math.PI * 2);
cxt.lineTo(width + x, height + y - radius);
cxt.arc(width - radius + x, height - radius + y, radius, 0, Math.PI * 1 / 2);
cxt.lineTo(radius + x, height + y);
cxt.arc(radius + x, height - radius + y, radius, Math.PI * 1 / 2, Math.PI);
cxt.closePath();
}
}
在Canvas.js引入drawCanvas.js
import drawCanvas from 'drawCanvas.js';
Page(Object.assign({},drawCanvas, {
/**
* é (yè)é¢çš„åˆå§‹æ•¸(shù)據(jù)
*/
data: {
canvasImg: 'https://dss0.baidu.com/6ONWsjip0QIZ8tyhnq/it/u=2635355882,2630309952&fm=218&app=2&f=JPEG?w=121&h=75&s=FF7204C5C0615D0773AD7CD103003098' // 實(shÃ)例
},
/**
* 生命周期函數(shù)--監(jiÄn)è½(tÄ«ng)é (yè)é¢åŠ è¼‰
*/
>: function (options) {
this.shareCreate()
},
//分享微信朋å‹åœˆ
async shareCreate() {
var self = this;
//self.downloadImg是drawCanvas.jsé‡Œé¢æ–¹æ³•
let imgUrl = await self.downloadImg(self.data.canvasImg);
wx.nextTick(() => { self.drawAll(imgUrl) })
},
drawAll(imgUrl) {
const query = wx.createSelectorQuery()
const node = query.select('#canvas').node();
var self = this;
node.exec(async res => {
const canvas = res[0].node;
//è¨(shè)置寬高
canvas.width = canvas._width
canvas.height = canvas._height
const ctx = canvas.getContext('2d');
//背景圖
await self.drawImage(canvas, ctx, "/images/shareImg.png", 0, 0, 750, 777);
//cover
await self.drawImage(canvas, ctx, imgUrl, 0, 0, 750, 460);
//logo
await self.drawImage(canvas, ctx, imgUrl, 50, 525, 363, 45);
setTimeout(async () => {
//èƒŒæ™¯é€æ˜Ž
ctx.fillStyle = 'rgba(0, 0, 0, 0.6)';
ctx.fillRect(0, 0, 750, 460);
//繪制空心矩形
ctx.strokeStyle = 'rgba(0, 0, 0, 0.6)';
ctx.strokeRect(0, 0, 750, 460);
ctx.save();
//title
ctx.textAlign = 'left';
ctx.fillStyle = 'rgba(255, 255, 255, 1)';
ctx.font = "normal bold 41px PingFangSC-Regular";
self.drawTxt(ctx, "測(cè)試å¡ç‰‡", 50, 390, 30, 50, 1);
//desc
ctx.textAlign = 'left';
ctx.fillStyle = "#1e1e1e";
ctx.font = "normal normal 28px PingFangSC-Regular";
self.drawTxt(ctx, "測(cè)試å¡ç‰‡æ¸¬(cè)試å¡ç‰‡æ¸¬(cè)è©¦å¡æ¸¬(cè)試å¡ç‰‡ç‰‡æ¸¬(cè)試å¡ç‰‡æ¸¬(cè)試å¡ç‰‡æ¸¬(cè)試å¡ç‰‡æ¸¬(cè)試å¡ç‰‡æ¸¬(cè)試å¡ç‰‡æ¸¬(cè)試å¡ç‰‡ç‰‡æ¸¬(cè)試å¡ç‰‡æ¸¬(cè)試å¡ç‰‡", 159, 661, 18, 43, 2);
//è£åˆ‡åœ“è§’
self.drawRoundRect(ctx, 50, 625, 92, 92, 46);
ctx.clip();
ctx.stroke();
//é åƒ
await self.drawImage(canvas, ctx, imgUrl, 50, 625, 92, 92);
ctx.restore();
ctx.closePath();
//canvas轉(zhuÇŽn)æˆåœ–片
self.previewHB(canvas)
}, 500)
})
},
//圖片é (yù)覽
previewHB(canvas) {
var self = this;
wx.nextTick(() => {
//轉(zhuÇŽn)æ›åœ–片
wx.canvasToTempFilePath({
canvas: canvas,
success:async (res)=> {
let img=res.tempFilePath
//é (yù)覽
wx.previewImage({
urls: [img]
})
}
})
})
},
}})
å¸Œæœ›å¤§å®¶èƒ½å¤ ç”¨åˆ°!
相關(guÄn)案例查看更多
相關(guÄn)閱讀
- 網(wǎng)站制作哪家好
- 微信分銷系統(tǒng)
- 云å—ç¶²(wÇŽng)站建è¨(shè)é èœå…¬å¸
- ç¶²(wÇŽng)絡(luò)å…¬å¸é›»è©±
- 昆明軟件公å¸
- 汽車回收系統(tǒng)
- 表單
- 微信å°ç¨‹åºé–‹(kÄi)發(fÄ)入門(mén)課程
- ç¶²(wÇŽng)站建è¨(shè)百度官方
- 微分銷
- 云å—ç¶²(wÇŽng)絡(luò)營(yÃng)銷顧å•(wèn)
- 云å—ç¶²(wÇŽng)站建è¨(shè)外包
- é–‹(kÄi)通微信å°ç¨‹åºè¢«é¨™
- æ±½è»Šå ±(bà o)廢回收管ç†ç³»çµ±(tÇ’ng)
- ç¶²(wÇŽng)站建è¨(shè)列表網(wÇŽng)
- 云å—ç¶²(wÇŽng)站建è¨(shè)百度
- .netç¶²(wÇŽng)ç«™
- 麗江å°ç¨‹åºé–‹(kÄi)發(fÄ)
- 云å—建è¨(shè)廳網(wÇŽng)ç«™
- 北京å°ç¨‹åºé–‹(kÄi)發(fÄ)
- ç¶²(wÇŽng)站建è¨(shè)需è¦å¤šå°‘錢(qián)
- 云å—ç¶²(wÇŽng)ç«™ç¶è·(hù)
- å°ç¨‹åºé–‹(kÄi)發(fÄ)è²»(fèi)用
- 云å—å°ç¨‹åºå•†åŸŽ
- 云å—ç¶²(wÇŽng)站建è¨(shè)電話
- 云å—建è¨(shè)廳官方網(wÇŽng)ç«™
- 云å—ç¶²(wÇŽng)站建è¨(shè)å ±(bà o)價(jià )
- 公眾號(hà o)æ¨¡æ¿æ¶ˆæ¯
- 電商網(wÇŽng)站建è¨(shè)
- 云å—ç¶²(wÇŽng)站建è¨(shè)å…¬å¸åœ°å€