|
|
import Wxml2Canvas from '../../src/index';
|
|
|
|
|
|
Page({
|
|
|
data: {
|
|
|
|
|
|
},
|
|
|
|
|
|
onLoad (res) {
|
|
|
this.drawImage1();
|
|
|
this.drawImage2();
|
|
|
this.drawImage3();
|
|
|
this.drawImage4();
|
|
|
this.drawImage5();
|
|
|
this.drawImage6();
|
|
|
this.drawImage7();
|
|
|
this.drawImage8();
|
|
|
},
|
|
|
|
|
|
drawImage1 () {
|
|
|
this.drawImage1 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 210,
|
|
|
element: 'canvas1',
|
|
|
gradientBackground: {
|
|
|
color: ['#27326b', '#540821'],
|
|
|
line: [0, 0, 0, 210]
|
|
|
},
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
|
|
|
drawImage2 () {
|
|
|
this.drawImage2 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 210,
|
|
|
element: 'canvas2',
|
|
|
background: '#f0f0f0',
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let data2 = {
|
|
|
list: [{
|
|
|
type: 'rect',
|
|
|
x: 10,
|
|
|
y: 10,
|
|
|
style: {
|
|
|
width: 150,
|
|
|
height: 80,
|
|
|
fill: {
|
|
|
color: ['#27326b', '#540821'],
|
|
|
line: [0, 0, 0, 110]
|
|
|
},
|
|
|
border: '10px solid #aaaaaa',
|
|
|
}
|
|
|
},{
|
|
|
type: 'rect',
|
|
|
x: 170,
|
|
|
y: 100,
|
|
|
style: {
|
|
|
width: 150,
|
|
|
height: 80,
|
|
|
fill: '#3762ab',
|
|
|
border: '10px dashed #540821',
|
|
|
boxShadow: '10 20 20 rgba(0, 0, 0, 0.4)',
|
|
|
// dash: [10, 20, 10]
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
|
|
|
this.drawImage2.draw(data2);
|
|
|
},
|
|
|
|
|
|
drawImage3 () {
|
|
|
this.drawImage3 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 210,
|
|
|
element: 'canvas3',
|
|
|
background: '#f0f0f0',
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let text = '一行很长很长很长很长很长很长很长很长很长很长的文字';
|
|
|
|
|
|
let data3 = {
|
|
|
list: [{
|
|
|
type: 'text',
|
|
|
text,
|
|
|
x: 0,
|
|
|
y: 0,
|
|
|
style: {
|
|
|
textAlign: 'left',
|
|
|
width: 130,
|
|
|
height: 80,
|
|
|
fontSize: 14,
|
|
|
lineHeight: 16,
|
|
|
fontWeight: 'bold',
|
|
|
boxShadow: '5 5 20 rgba(255, 0, 0, 0.5)',
|
|
|
}
|
|
|
}, {
|
|
|
type: 'text',
|
|
|
text,
|
|
|
x: 170,
|
|
|
y: 0,
|
|
|
style: {
|
|
|
textAlign: 'center',
|
|
|
width: 130,
|
|
|
fontSize: 14,
|
|
|
lineHeight: 16,
|
|
|
color: '#888888',
|
|
|
}
|
|
|
}, {
|
|
|
type: 'text',
|
|
|
text,
|
|
|
x: 0,
|
|
|
y: 70,
|
|
|
style: {
|
|
|
textAlign: 'right',
|
|
|
width: 130,
|
|
|
fontSize: 14,
|
|
|
lineHeight: 16,
|
|
|
fontFamily: 'Serif'
|
|
|
}
|
|
|
}, {
|
|
|
type: 'text',
|
|
|
text,
|
|
|
x: 170,
|
|
|
y: 70,
|
|
|
style: {
|
|
|
textAlign: 'center',
|
|
|
width: 130,
|
|
|
lineClamp: 2,
|
|
|
fontSize: 14,
|
|
|
lineHeight: 16,
|
|
|
}
|
|
|
}, {
|
|
|
type: 'text',
|
|
|
text,
|
|
|
x: 0,
|
|
|
y: 140,
|
|
|
style: {
|
|
|
textAlign: 'left',
|
|
|
width: 130,
|
|
|
fontSize: 14,
|
|
|
lineHeight: 16,
|
|
|
height: 60,
|
|
|
background: 'rgba(0, 111, 255, 0.5)',
|
|
|
color: '#ffffff'
|
|
|
}
|
|
|
}, {
|
|
|
type: 'text',
|
|
|
text,
|
|
|
x: 170,
|
|
|
y: 140,
|
|
|
style: {
|
|
|
textAlign: 'left',
|
|
|
width: 130,
|
|
|
background: 'rgba(255, 0, 0, 0.3)',
|
|
|
fontSize: 14,
|
|
|
lineHeight: 16,
|
|
|
height: 60,
|
|
|
border: '2px solid #000000',
|
|
|
padding: '5 10 0 10'
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
|
|
|
this.drawImage3.draw(data3);
|
|
|
},
|
|
|
|
|
|
drawImage4 () {
|
|
|
this.drawImage4 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 210,
|
|
|
element: 'canvas4',
|
|
|
background: '#f0f0f0',
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let data4 = {
|
|
|
list: [{
|
|
|
type: 'circle',
|
|
|
x: 30,
|
|
|
y: 30,
|
|
|
style: {
|
|
|
r: 40,
|
|
|
fill: {
|
|
|
color: ['#27326b', '#540821'],
|
|
|
line: [0, 0, 0, 110]
|
|
|
},
|
|
|
border: '10px solid #aaaaaa',
|
|
|
boxShadow: '10 10 20 rgba(0, 0, 0, 0.6)',
|
|
|
}
|
|
|
},{
|
|
|
type: 'circle',
|
|
|
x: 200,
|
|
|
y: 100,
|
|
|
style: {
|
|
|
r: 40,
|
|
|
fill: '#3762ab',
|
|
|
border: '10px dashed #540821',
|
|
|
// dash: [10, 20, 10]
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
|
|
|
this.drawImage4.draw(data4);
|
|
|
},
|
|
|
|
|
|
drawImage5 () {
|
|
|
this.drawImage5 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 210,
|
|
|
element: 'canvas5',
|
|
|
background: '#f0f0f0',
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let data5 = {
|
|
|
list: [{
|
|
|
type: 'line',
|
|
|
x: 30,
|
|
|
y: 30,
|
|
|
x2: 200,
|
|
|
y2: 30,
|
|
|
style: {
|
|
|
width: 10,
|
|
|
// stroke: '#3762ab',
|
|
|
stroke: {
|
|
|
color: ['#27326b', '#540821'],
|
|
|
line: [0, 0, 200, 10]
|
|
|
},
|
|
|
}
|
|
|
},{
|
|
|
type: 'line',
|
|
|
x: 30,
|
|
|
y: 100,
|
|
|
x2: 200,
|
|
|
y2: 100,
|
|
|
style: {
|
|
|
r: 40,
|
|
|
width: 10,
|
|
|
stroke: '#3762ab',
|
|
|
dash: [10, 10, 0],
|
|
|
boxShadow: '20 20 20 rgba(0, 0, 0, 0.3)',
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
|
|
|
this.drawImage5.draw(data5);
|
|
|
},
|
|
|
|
|
|
drawImage6 () {
|
|
|
this.drawImage6 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 210,
|
|
|
element: 'canvas6',
|
|
|
background: '#f0f0f0',
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let data6 = {
|
|
|
list: [{
|
|
|
type: 'image',
|
|
|
x: 10,
|
|
|
y: 10,
|
|
|
url: 'https://mmocgame.qpic.cn/wechatgame/duc2TvpEgSQCEa0WicosqlEgJiacYLaTLEDFB8Kq9Hr7LjAVhM8wu8TT77KqNezQnH/0',
|
|
|
style: {
|
|
|
width: 150,
|
|
|
height: 80,
|
|
|
border: '10px solid #aaaaaa',
|
|
|
boxShadow: '10 20 20 rgba(0, 0, 0, 0.4)',
|
|
|
}
|
|
|
},{
|
|
|
type: 'image',
|
|
|
x: 170,
|
|
|
y: 100,
|
|
|
url: './img/demo.png',
|
|
|
style: {
|
|
|
width: 150,
|
|
|
height: 80,
|
|
|
border: '10px dashed #540821',
|
|
|
// dash: [10, 20, 10]
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
|
|
|
this.drawImage6.draw(data6);
|
|
|
},
|
|
|
|
|
|
drawImage7 () {
|
|
|
this.drawImage7 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 210,
|
|
|
element: 'canvas7',
|
|
|
background: '#f0f0f0',
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let data7 = {
|
|
|
list: [{
|
|
|
type: 'radius-image',
|
|
|
x: 10,
|
|
|
y: 10,
|
|
|
url: './img/demo.png',
|
|
|
style: {
|
|
|
r: 40,
|
|
|
border: '10px solid #aaaaaa',
|
|
|
boxShadow: '10 10 20 rgba(0, 0, 0, 0.6)',
|
|
|
}
|
|
|
},{
|
|
|
type: 'radius-image',
|
|
|
x: 170,
|
|
|
y: 100,
|
|
|
url: './img/demo.png',
|
|
|
style: {
|
|
|
r: 40,
|
|
|
border: '10px dashed #540821',
|
|
|
// dash: [10, 20, 10]
|
|
|
}
|
|
|
}]
|
|
|
}
|
|
|
|
|
|
this.drawImage7.draw(data7);
|
|
|
},
|
|
|
|
|
|
drawImage8 () {
|
|
|
this.drawImage8 = new Wxml2Canvas({
|
|
|
width: 340,
|
|
|
height: 400,
|
|
|
element: 'canvas8',
|
|
|
background: '#f0f0f0',
|
|
|
finish(url) {
|
|
|
},
|
|
|
error (res) {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let style = {
|
|
|
text: {
|
|
|
textAlign: 'left',
|
|
|
width: 320,
|
|
|
fontSize: 16,
|
|
|
lineHeight: 25,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
let text = [
|
|
|
'Wxml2Cavnas库,是一个生成小程序分享图的通用方案,提供了两种绘制方式:',
|
|
|
'封装基础图形的绘制接口,包括矩形、圆形、线条、图片、圆角图片、纯文本等,使用时只需要声明元素类型并提供关键数据即可,不需要再关注canvas的具体绘制过程;',
|
|
|
'wxml直接转换成canvas元素,使用时传入待绘制的wxml节点的class类名,并且声明绘制此节点的类型(图片、文字等),会自动读取此节点的computedStyle,利用这些数据完成元素的绘制。',
|
|
|
]
|
|
|
|
|
|
let height1 = 20 + Math.ceil(this.drawImage8.measureWidth(text[0], '16px pingfang') / style.text.width) * style.text.lineHeight;
|
|
|
let height2 = height1 + 10 + Math.ceil(this.drawImage8.measureWidth(text[1], '16px pingfang') / style.text.width) * style.text.lineHeight;
|
|
|
let data8 = {
|
|
|
list: [
|
|
|
{
|
|
|
type: 'text',
|
|
|
text: text[0],
|
|
|
x: 10,
|
|
|
y: 10,
|
|
|
style: style.text
|
|
|
}, {
|
|
|
type: 'text',
|
|
|
text: text[1],
|
|
|
x: 10,
|
|
|
y: height1,
|
|
|
style: style.text
|
|
|
}, {
|
|
|
type: 'image',
|
|
|
x: 10,
|
|
|
y: height2,
|
|
|
url: './img/demo.png',
|
|
|
style: {
|
|
|
width: 100,
|
|
|
height: 60,
|
|
|
}
|
|
|
}, {
|
|
|
type: 'text',
|
|
|
text: text[2],
|
|
|
x: 15,
|
|
|
y: height2 + 80,
|
|
|
style: style.text
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
|
|
|
this.drawImage8.draw(data8);
|
|
|
}
|
|
|
}); |