这是我提供更完整答案的努力(基于@john 的答案)。
我遇到的最初问题是更改画布节点的宽度和高度(使用样式),导致内容只是“缩放”或“缩小”。这不是预期的效果。
因此,假设您想在 100 x 100 像素的画布中绘制两个任意大小的矩形。
<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/。