关键词搜索

源码搜索 ×
×

canvas笔记-文本(fillText)旋转(rotate)

发布2020-06-08浏览4701次

详情内容

这里fillText直接使用rotate会有问题。估计是旋转中心有问题。

 

正确的逻辑为:

先使用translate移动中心点在文本起始位置,如何在0,0处fillText即可。

如果要在字符串中心进行旋转,则需要获取字符串长度,translate的时候x进行+,y轴进行-即可。

 

程序运行截图如下:

绿色的为原始字符串,红色是从顶部进行旋转,绿色为在中心进行旋转。

代码如下:

 

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">
  9. 当前浏览器不支持canvas
  10. </canvas>
  11. <script>
  12. window.onload = function(){
  13. let canvas = document.getElementById("canvas");
  14. canvas.width = 1980;
  15. canvas.height = 1024;
  16. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  17. context.fillStyle = "green";
  18. context.fillText("中文ABCDEFG", 400, 400);
  19. context.save();
  20. context.translate(400, 400);
  21. context.rotate(90 * Math.PI / 180);
  22. context.fillStyle = "red";
  23. context.fillText("中文ABCDEFG", 0, 0);
  24. context.restore();
  25. //中心位置旋转
  26. let strWidth = context.measureText("中文ABCDEFG").width;
  27. console.log("strWidth:" + strWidth);
  28. context.save();
  29. context.translate(400 + strWidth / 2, 400 - strWidth / 2);
  30. context.rotate(90 * Math.PI / 180);
  31. context.fillStyle = "blue";
  32. context.fillText("中文ABCDEFG", 0, 0);
  33. context.restore();
  34. }
  35. </script>
  36. </body>
  37. </html>

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载