スケーリングしている場合は、配置に使用する座標も拡大されることを覚えておく必要があり4
ます。画像を単独でスケーリングするには、呼び出しと使用を使用できます...200 * 4
200
drawImage(img,x,y,width,height)
var c = document.getElementById("mycanvas");
var ctx = c.getContext("2d");
var scale = 4;
var width = img.width * scale;
var height = img.height * scale;
ctx.drawImage(img, 0, 0, width, height);
ctx.drawImage(img, 200, 200, width, height);
または、座標を倍率で割る必要があります...
var c = document.getElementById("mycanvas");
var ctx = c.getContext("2d");
var scale = 4;
ctx.scale(scale, scale);
ctx.drawImage(img, 0, 0);
ctx.drawImage(img, 200 / scale, 200 / scale);
クリッピングを使用して画像が象限にとどまるようにする後者のアプローチを示すフィドルをまとめましたhttp://jsfiddle.net/ujtd2/
状態スタックを使用して編集すると、自分で変換を行う必要がなくなります。
var c = document.getElementById("mycanvas");
var ctx = c.getContext("2d");
var scale = 4;
// add a new item to the context state stack
ctx.save();
ctx.scale(scale, scale);
ctx.drawImage(img, 0, 0);
// discard the previous state be restoring the last state
// back to normal scale
ctx.restore();
// Set translation
ctx.translate(200, 200);
// Repeat for second image
ctx.save();
ctx.scale(scale, scale);
ctx.drawImage(img, 0, 0);
私は今フォローします。特定の座標からシーンの一部をズームインして表示するには、translate を使用します。
ctx.scale(4, 4);
ctx.translate(-200, -200);
ctx.drawImage(img, 0, 0);
ctx.drawImage(img, 200, 200);
これは 4 倍に拡大し、描画座標を上下に 200 ピクセルずつ変換することで、可視部分を上下に 200 ピクセルずつ移動します。