亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在縮放畫布中獲取像素范圍?

如何在縮放畫布中獲取像素范圍?

開滿天機 2021-10-21 15:02:28
在下面的代碼中,我在中心畫了一個圓,但是因為它是縮放的,所以這個圓在右下角!var canvas = document.getElementById('mycanvas');context = canvas.getContext("2d");context.canvas.width = 400;context.canvas.height = 200;context.clearRect(0, 0, context.canvas.width, context.canvas.height); // Clears the canvasvar scale = 2;context.scale(scale, scale);context.beginPath();context.fillStyle = "#ff2626"; // Red colorcontext.arc(context.canvas.width / 2, context.canvas.height / 2, 10, 0, Math.PI * 2); //centercontext.fill();context.closePath();canvas {        border: solid 1px #ccc;}<HTML><body><canvas id="mycanvas"></canvas></body></HTML>您可能知道,畫布的寬度和高度與在其中繪制的內容無關,尤其是在縮放時。換句話說,當您使用context.scale(scale_x, scale_y);它縮放畫布時,它將縮放畫布內的所有形狀。我想知道,有沒有辦法獲得畫布像素范圍?我想知道縮放畫布時左邊緣和右邊緣的 X 以及頂部和底部邊緣的 Y。
查看完整描述

3 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

將坐標除以scale應該可以解決問題:


var canvas = document.getElementById('mycanvas');

context = canvas.getContext("2d");

context.canvas.width = 400;

context.canvas.height = 200;


context.clearRect(0, 0, context.canvas.width, context.canvas.height); // Clears the canvas


var scale = 2;

context.scale(scale, scale);

context.beginPath();

context.fillStyle = "#ff2626"; // Red color

context.arc(context.canvas.width /2/scale, context.canvas.height / 2/scale, 10, 0, Math.PI * 2); //center

context.fill();

context.closePath();

canvas {

        border: solid 1px #ccc;

}

<HTML>

<body>


<canvas id="mycanvas"></canvas>


</body>

</HTML>

順便說一句,context.canvas.width /(2*scale)比 更干凈context.canvas.width /2/scale,但我保持這樣只是為了顯示除以scale.


查看完整回答
反對 回復 2021-10-21
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

你必須考慮你的比例所以 ex (width/2)/scale


var canvas = document.getElementById('mycanvas');

context = canvas.getContext("2d");

context.canvas.width = 400;

context.canvas.height = 200;


context.clearRect(context.canvas.width, context.canvas.height, context.canvas.width, context.canvas.height); // Clears the canvas


var scale = 2;

context.scale(scale, scale);

context.beginPath();

context.fillStyle = "#ff2626"; // Red color

context.arc((context.canvas.width/2)/scale , (context.canvas.height/2)/scale, 10, 0, Math.PI * 2); //center

context.fill();

context.closePath();

canvas {

        border: solid 1px #ccc;

}

<HTML>

<body>


<canvas id="mycanvas"></canvas>


</body>

</HTML>


查看完整回答
反對 回復 2021-10-21
  • 3 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號