关键词搜索

源码搜索 ×
×

canvas笔记-文本水平垂直对齐与度量

发布2020-06-02浏览1228次

详情内容

在canvas中通过textAlign可以设置文本的对齐:

其中left为左对齐,center为居中对齐,right为右对齐。

程序运行截图如下:

源码如下:

  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 = 800;
  15. canvas.height = 800;
  16. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  17. context.fillStyle = "#058";
  18. context.font = "bold 40px sans-serif";
  19. context.textAlign = "left";
  20. context.fillText("textAlign = left", 400, 100);
  21. context.textAlign = "center";
  22. context.fillText("textAlign = left", 400, 200);
  23. context.textAlign = "right";
  24. context.fillText("textAlign = left", 400, 300);
  25. //baseline
  26. context.strokeStyle = "#888";
  27. context.moveTo(400, 0);
  28. context.lineTo(400, 800);
  29. context.stroke();
  30. }
  31. </script>
  32. </body>
  33. </html>

 

 

上面是指水平对齐,下面记录下垂直对齐

通过调用textbaseline函数进行垂直对齐,其中top为向上对齐,middle为居中对齐,bottom为底部对齐,默认情况下是alphabetic,还有2给参数一个是ideographic为中文,hanging为印度文的。

下面简单记录下。

程序运行截图如下:

源码如下:

  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 = 800;
  15. canvas.height = 800;
  16. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  17. context.fillStyle = "#058";
  18. context.font = "bold 40px sans-serif";
  19. context.textBaseline = "top";
  20. context.fillText("中文ABC12345@!#@¥%%%*&", 40, 100);
  21. drawBaseline(context, 100);
  22. context.textBaseline = "middle";
  23. context.fillText("中文ABC12345@!#@¥%%%*&", 40, 200);
  24. drawBaseline(context, 200);
  25. context.textBaseline = "bottom";
  26. context.fillText("中文ABC12345@!#@¥%%%*&", 40, 300);
  27. drawBaseline(context, 300);
  28. context.textBaseline = "ideographic";
  29. context.fillText("中文ABC12345@!#@¥%%%*&", 40, 400);
  30. drawBaseline(context, 400);
  31. context.textBaseline = "hanging";
  32. context.fillText("中文ABC12345@!#@¥%%%*&", 40, 500);
  33. drawBaseline(context, 500);
  34. }
  35. function drawBaseline(cxt, h){
  36. let width = cxt.canvas.width;
  37. cxt.save();
  38. cxt.strokeStyle = "#899";
  39. cxt.lineWidth = 2;
  40. cxt.moveTo(0, h);
  41. cxt.lineTo(width, h);
  42. cxt.stroke();
  43. cxt.restore();
  44. }
  45. </script>
  46. </body>
  47. </html>

 

 

 

下面是文本的度量

再canvas中通过measureText(string).width可以获取其长度。

程序运行截图如下:

源码如下:

  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 = 800;
  15. canvas.height = 800;
  16. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  17. context.fillStyle = "#058";
  18. context.font = "bold 40px sans-serif";
  19. let stringValue = "中文ABC12345@!#@¥%%%*&";
  20. context.fillText(stringValue, 40, 100);
  21. let textWidth = context.measureText(stringValue).width;
  22. context.fillText("字符串宽度为:" + textWidth + "px", 40, 200);
  23. }
  24. </script>
  25. </body>
  26. </html>

 

 

相关技术文章

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

提示信息

×

选择支付方式

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