接到个需求,文字在canvas里面绘制90度,再贴到地图里面做纹理
最终效果
先看调试效果
罗字是正常文字,“测”、“路”是旋转后的理想文字效果
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="300" height="200" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.
</canvas>
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.save();
//ctx.font="20px Georgia";
//ctx.fillText("Hello World!",10,50);
ctx.translate(115,60);
ctx.rotate(-90*Math.PI/180);
ctx.textBaseline = 'middle'
ctx.font="30px Verdana";
ctx.fillStyle='blue';
ctx.fillText("测",0,0);
//ctx.save();
ctx.restore();
ctx.save();
ctx.translate(165,60);
ctx.rotate(-90*Math.PI/180);
ctx.textBaseline = 'middle'
ctx.font="30px Verdana";
ctx.fillStyle='blue';
ctx.fillText('路',0,0);
ctx.restore();
//ctx.translate(145,115);
//ctx.rotate(-90*Math.PI/180);
ctx.textBaseline = 'middle'
ctx.font="30px Verdana";
ctx.fillStyle='blue';
ctx.fillText('罗',60,45);
</script>
</body>
</html>
需要用到的关键 Canvas API
rotate(angle) 旋转用,如这里旋转了-90°
translate 移动中心点
save
restore
主要的坑
说下主要遇到的坑,一开始接到需求,认为不就旋转下文字么,简单,查下api rotate,然后一用,没效果 坑
查下api相关资料说明,rotate的旋转不是针对旋转绘制的图性文字这些,而是旋转整个画布
所以就需要用到 translate,改变中心点再旋转,然后针对性的调整下细节位置
实际生产应用效果
调研完毕就是实际应用了,上一个实际效果,主要就是作为路面文字贴图,易于阅读