これは、より完全な回答を提供するための私の努力です(@johnの回答に基づいています)。
私が最初に遭遇した問題は、(スタイルを使用して) キャンバス ノードの幅と高さを変更することでした。その結果、コンテンツが単に「ズーム」または「縮小」されました。これは望ましい効果ではありませんでした。
たとえば、100px x 100px のキャンバスに任意のサイズの 2 つの長方形を描きたいとします。
<canvas width="100" height="100"></canvas>
長方形がキャンバスのサイズを超えて表示されないようにするには、キャンバスが十分な大きさであることを確認する必要があります。
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);
最後に、このための jsfiddle を次に示します: http://jsfiddle.net/Rka6D/4/。