pistacchio February 2016

JavaScript canvas: write within box

In a JS canvas, how can I place a text within a "box", Ora have it stay in a rectangle? I mean, I can place a text at x, y coordinate, but I'd like it to lay in a surround box x0, y0, x1, y1, so to have line breaks when the text is about to go out of the box, I can center it within the rectangle and possibly have the text scaled to fit as much as the box as possible.

Is there such a library to do so?

Answers


abhay vyas February 2016

hope this will help you

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

Post Status

Asked in February 2016
Viewed 2,296 times
Voted 9
Answered 1 times

Search




Leave an answer