uni-app canvas 绘制印章放在 onReady 里面不显示,总是一闪而过。
canvasYinzhang(){
var context = uni.createCanvasContext('yinzhang');
var text = "";
var companyName = "xxx有限公司";
context.setLineCap('round');//设置线两端端点样式更加圆润
context.setLineJoin('round');//设置两条线连接处更加圆润
context.setStrokeStyle("#ff0000");//设置线的颜色
context.setLineWidth(3);//设置线条的宽度
context.moveTo(190, 100);
context.arc(100, 100, 90, 0, Math.PI 2);//宽、高、半径
context.stroke();
//绘制五角星
this.create5star(context,100,100,25,"#f00",0);
context.setFontSize('21');//设置字体大小
context.setTextBaseline('middle');//设置文本的垂直对齐方式
context.setTextAlign('center'); //设置文本的水平对对齐方式
context.setLineWidth(2.5);
context.setFillStyle('#f00');
context.strokeText(text,100+60);
// 绘制印章单位
context.translate(100,100);// 平移到此位置,
// context.font = '20px 宋体';
var count = companyName.length;// 字数
var angle = 4Math.PI/(3(count - 1));// 字间角度
var chars = companyName.split("");
var c;
for (var i = 0; i < count; i++) {
c = chars[i];// 需要绘制的字符
if (i == 0) {
context.rotate(5 Math.PI / 6);
} else{
context.rotate(angle);
}
context.save();
context.translate(70, 0);// 平移到此位置,此时字和x轴垂直,公司名称和最外圈的距离
context.rotate(Math.PI / 2);// 旋转90度,让字平行于x轴
// context.strokeText(c, 0, 0);// 此点为字的中心点
context.setFillStyle("#ff0000");//设置填充颜色
context.fillText(c,0,0);//此点为字的中心点
context.restore();
}
context.draw();
},
//绘制五角星
create5star(context, sx, sy, radius, color, rotato) {
context.save();
context.setFillStyle(color);//设置填充颜色
context.translate(sx, sy);//移动坐标原点
context.rotate(Math.PI + rotato);//旋转
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 radius, y * radius);
}
context.closePath();
context.stroke();
context.fill();
context.restore();
},
4 个回复
Kai3546
之前很抵触这个框架,最近耐下心来试着开发一下,结果也碰到这个坑了,真的让我很烦,想吐槽这个框架了
GraceLeeau - Web前端开发工程师
请问是否找到原因,为何会一闪而过,怎么解决呢?我这边用hello模板测试canvas画图,也是画的图形一闪而过,画布又变空了
GraceLeeau - Web前端开发工程师
【报Bug】【紧急非常严重】canvas h5下绘制空白,一闪而过
看到这里报了这个问题,有一个解决方法,延迟后执行
ctx.draw()
,至于原因,回答的人没有说,我目前也不知道DCloud_UNI_GSQ
HBuilderX 2.6.3+ 已修复