JavaScript canvas:在盒子里写

JavaScript canvas: write within box

本文关键字:盒子 canvas JavaScript      更新时间:2023-09-26

在JS画布中,如何将文本放置在"框"中,或者将其保留在矩形中?我的意思是,我可以将文本放在 x、y 坐标处,但我希望它放在环绕框 x0、y0、x1、y1 中,所以当文本即将从盒子里出来时要有换行符,我可以将其居中矩形,并可能缩放文本以尽可能适合框。

有这样的图书馆可以这样做吗?

希望对您有所帮助

<!DOCTYPE HTML>
<html>
  <head>
    <style>
      body {
        margin: 0px;
        padding: 0px;
      }
    </style>
  </head>
  <body>
    <canvas id="myCanvas" width="578" height="200"></canvas>
    <script>
      function wrapText(context, text, x, y, maxWidth, lineHeight) {
        var words = text.split(' ');
        var line = '';
        for(var n = 0; n < words.length; n++) {
          var testLine = line + words[n] + ' ';
          var metrics = context.measureText(testLine);
          var testWidth = metrics.width;
          if (testWidth > maxWidth && n > 0) {
            context.fillText(line, x, y);
            line = words[n] + ' ';
            y += lineHeight;
          }
          else {
            line = testLine;
          }
        }
        context.fillText(line, x, y);
      }
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');
      var maxWidth = 400;
      var lineHeight = 25;
      var x = (canvas.width - maxWidth) / 2;
      var y = 60;
      var text = 'All the world ''s a stage, and all the men and women merely players. They have their exits and their entrances; And one man in his time plays many parts.';
      context.font = '16pt Calibri';
      context.fillStyle = '#333';
      wrapText(context, text, x, y, maxWidth, lineHeight);
    </script>
  </body>
</html>