<input type="text" placeholder="请输入公司名称" bindinput="bindInputCompany" value="{{company}}" />
<canvas type="2d" id="circleBar" style="width: 400rpx;height:400rpx;margin: 30rpx auto;"></canvas>
<button type="primary" bindtap="comCreateSeal">生成公章</button>
Page({
data: {
company: "",
},
onShow() {},
bindInputCompany(e) {
this.setData({
company: e.detail.value.trim()
})
},
comCreateSeal() {
if (!this.data.company) {
wx.showToast({
title: '请输入公司名称',
icon: 'none',
})
return
}
var context1 = wx.createCanvasContext('circleBar');
console.log(context1);
const opts = {
company: this.data.company,
companyTight: false,
}
this.createSelectorQuery()
.select('#circleBar')
.fields({
node: true,
size: true,
}).exec((res) => {
console.log(res)
const canvas = res[0].node;
const context = canvas.getContext('2d');
context.fillStyle = 'rgba(255, 255, 255, 0)';
canvas.width = res[0].width
canvas.height = res[0].height
const width = canvas.width / 2;
const height = canvas.height / 2;
context.lineWidth = 3;
context.strokeStyle = "#f00";
context.beginPath();
context.arc(width, height, 78, 0, Math.PI * 2);
context.stroke();
context.save();
context.save();
context.fillStyle = "#f00";
context.translate(width, height);
context.rotate(Math.PI + 0);
context.beginPath();
var x = Math.sin(0);
var y = Math.cos(0);
var dig = Math.PI / 5 * 4;
for (var i = 0; i < 5; i++) {
var x = Math.sin(i * dig);
var y = Math.cos(i * dig);
context.lineTo(x * 25, y * 25);
}
context.closePath();
context.stroke();
context.fill();
context.restore();
context.font = '18px Helvetica';
context.textBaseline = 'middle';
context.textAlign = 'center';
context.lineWidth = 1;
context.fillStyle = '#f00';
context.translate(width, height);
var count = opts.company.length;
if (count > 14) {
var maxCount = 18;
context.font = '16px Helvetica'
if (opts.companyTight) {
var angle = 4 * Math.PI / 51;
} else {
var angle = 4 * Math.PI / (3 * (count - 1));
}
} else {
var maxCount = 14;
context.font = '20px Helvetica'
if (opts.companyTight) {
var angle = 4 * Math.PI / 39;
} else {
var angle = 4 * Math.PI / (3 * (count - 1));
}
}
var chars = opts.company.split("");
var c;
for (var i = 0; i < count; i++) {
c = chars[i];
if (i == 0) {
if (opts.companyTight) {
context.rotate(5 * Math.PI / 6 + angle * ((maxCount - count) / 2));
} else {
context.rotate(5 * Math.PI / 6);
}
} else {
context.rotate(angle);
}
context.save();
context.translate(64, 0);
context.rotate(Math.PI / 2);
context.fillText(c, 0, 5);
context.restore();
}
wx.canvasToTempFilePath({
canvasId: 'circleBar',
canvas: canvas,
x: 0,
y: 0,
width: 260,
height: 260,
destWidth: 260,
destHeight: 260,
success(res) {
console.log('图片临时路径:', res.tempFilePath)
},
fail(res) {
console.error(res)
}
})
})
},
});