介绍
这篇文章主要介绍小程序怎么用帆布绘制海报,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
踩坑
“标题”问题1:为什么在画布上画图片模糊吗?
在画布上绘制图片/文字的时候,我们设定画布:375 * 667的宽高,会发现绘制出来的图片很模糊,感觉像是一张分辨率很差的图片,文字看起来也会有叠影。
<人物> & lt; canvas 宽度=?20“,身高=?80“,风格=翱矶?160 px;高度:90 px;“祝辞& lt;/canvas>问题2:如何处理px和rpx的转换?
rpx是小程序里特有的尺寸单位,可以根据屏幕的宽度进行自适应,而在iphone6/iphonex上,1 rpx等于不同的px。所以很可能会导致在不同手机下,你的画布展示不一致。
在绘制海报的之前,我们拿到的设计稿一般都是基于iphone6的2倍图。而且从上一个问题的解决,我们知道画布的大小也是2倍的,所以我们可以直接量取2倍图的设计稿直接绘制画布,而尺寸需要注意一下rpxtoPx。
measureText(文本,fontSize =, 10), { ,,,text =,字符串(文本) ,,,text =, text.split (& # 39; & # 39;) ,,,let width =0 ,,,text.forEach(函数(项),{ ,,,,,if (/[a-zA-Z]/test(项),{ ,,,,,,,width +=7 ,,,,,},else if (/[0 - 9]/test(项),{ ,,,,,,,width 5.5 +=, ,,,,,},else if (/\/test(项),{ ,,,,,,,width 2.7 +=, ,,,,,},else if (/,/test(项),{ ,,,,,,,width 3.25 +=, ,,,,,},else if (/[\ u4e00 - \ u9fa5]/test(项),{,//中文匹配 ,,,,,,,width +=10 ,,,,,},else if (/\ (| \)/test(项),{ ,,,,,,,width 3.73 +=, ,,,,,},else if (/\ s/test(项),{ ,,,,,,,width 2.5 +=, ,,,,,},else if (/%/test(项),{ ,,,,,,,width +=8 ,,,,,},{else ,,,,,,,width +=10 ,,,,,} ,,,}) ,,,return width *, fontSize /10 以前,,}>问题4:如何保证一行字体的居中展示?多行呢?
字体的如果过长,会超出帆布画布,造成绘制难看,这个时候我们就应该让超出的部分变成<代码>…代码>你可以设置一个宽度并且循环计算计算出文本的宽度,如果超出则利用子字符串截取后补充<代码>…> 代码即可。
let fillText=& # 39; & # 39; let width =350 for (let 小姐:=,0;,小姐:& lt;=, text.length 作用;1;,我+ +),{,//将文字转为数组,一行文字一个元素 ,,,,,,,fillText =, fillText +,文本(我) ,,,,,,,//,判断截断的位置 ,,,,,,,if (this.measureText (fillText, this.toPx(字形大小,,真的),祝辞=,宽度),{ ,,,,,,,,,if (line ===, lineNum), { null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null小程序怎么用帆布绘制海报