JavaScript画布:在框内写入

时间:2016-02-08 06:52:08

标签: javascript canvas html5-canvas

在JS画布中,如何将文本放在“框”中,Ora将其保留在矩形中?我的意思是,我可以在x,y坐标处放置一个文本,但我希望它放在一个环绕框x0,y0,x1,y1中,所以当文本即将开箱时要有换行符,我可以将它放在矩形中心,并且可能将文本缩放到尽可能多的方框。

有这样的图书馆吗?

1 个答案:

答案 0 :(得分:1)

希望这会对你有所帮助

<!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>