文本属性
  • 字体:fontcanvas里得font属性和css的font属性是一样的,它可以设置文本的粗细、字号、字体等
    • css设置字体:p{font:bold 18px serif}
    • canvas设置字体:ctx.font = 'bold 18px serif'
  • 水平对齐: textAlign下方文字的x位置都是一样,都是垂直虚线的x位置,它们的textAlign的属性各不相同
    image.png
    • start和end受html的dir属性影响

image.pngimage.png
默认情况:<html dir="ltr"> <html dir="rtl">

  • 垂直对齐: textBaselinen

image.png

alphabetic 默认。标准字母基线对齐
top 上对齐
hanging 悬挂基线对齐
middle 垂直居中
ideographic 表意基线对齐
bottom 下对齐

文本的绘制方法
  • 填充文字 fillText(text, x, y, maxWidth)
  • 描边文字 strokeText(text, x, y, maxWidth)
  • 获取文字宽度的方法:measureText(text)

布艺文字
  • 要点:fillText(), strokeText(), setLineDash(), shadowColor, shadowBlur, shadowOffsetY

image.png
实现上图的代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>文本</title>
  6. <style>
  7. body {
  8. margin: 0;
  9. overflow: hidden
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <canvas id="canvas"></canvas>
  15. <script>
  16. const canvas = document.getElementById('canvas');
  17. canvas.width = window.innerWidth;
  18. canvas.height = window.innerHeight;
  19. const ctx = canvas.getContext('2d');
  20. /*文字内容*/
  21. const text = 'canvas';
  22. /*文字位置*/
  23. const [x, y] = [50, 200];
  24. /*字体属性,文字加粗,大小:200px,字体:arial*/
  25. ctx.font = 'bold 200px arail';
  26. /*投影,颜色:rgba(0,0,0,0.6),垂直偏移:2,模糊:4*/
  27. ctx.shadowColor = 'rgba(0,0,0,0.6)';
  28. ctx.shadowOffsetY = 2;
  29. ctx.shadowBlur = 4;
  30. /*填充文字,颜色:#a76921*/
  31. ctx.fillStyle = '#a76921';
  32. ctx.fillText(text, x, y);
  33. /*实线描边文字,颜色:#f0d5ac,线宽:8*/
  34. ctx.strokeStyle = '#f0d5ac';
  35. ctx.lineWidth = 8;
  36. ctx.strokeText(text, x, y);
  37. /*虚线描边文字,颜色:#333,线宽:1,线段长度[5,3]*/
  38. ctx.strokeStyle = '#333';
  39. ctx.lineWidth = 1;
  40. ctx.setLineDash([5, 3]);
  41. ctx.strokeText(text, x, y);
  42. </script>
  43. </body>
  44. </html>