How to resize html canvas element?

后端 未结 7 1809
慢半拍i
慢半拍i 2020-11-29 01:34

I have a canvas element defined statically in the html with a width and height. If I attempt to use JavaScript to resize it dynamically (setting a new width and height - eit

相关标签:
7条回答
  • 2020-11-29 02:38

    Here's my effort to give a more complete answer (building on @john's answer).

    The initial issue I encountered was changing the width and height of a canvas node (using styles), resulted in the contents just being "zoomed" or "shrunk." This was not the desired effect.

    So, say you want to draw two rectangles of arbitrary size in a canvas that is 100px by 100px.

    <canvas width="100" height="100"></canvas>
    

    To ensure that the rectangles will not exceed the size of the canvas and therefore not be visible, you need to ensure that the canvas is big enough.

    var $canvas = $('canvas'),
        oldCanvas,
        context = $canvas[0].getContext('2d');
    
    function drawRects(x, y, width, height)
    {
      if (($canvas.width() < x+width) || $canvas.height() < y+height)
      {
        oldCanvas = $canvas[0].toDataURL("image/png")
        $canvas[0].width = x+width;
        $canvas[0].height = y+height;
    
        var img = new Image();
        img.src = oldCanvas;
        img.onload = function (){
          context.drawImage(img, 0, 0);
        };
      }
      context.strokeRect(x, y, width, height);
    }
    
    
    drawRects(5,5, 10, 10);
    drawRects(15,15, 20, 20);
    drawRects(35,35, 40, 40);
    drawRects(75, 75, 80, 80);
    

    Finally, here's the jsfiddle for this: http://jsfiddle.net/Rka6D/4/ .

    0 讨论(0)
提交回复
热议问题