我在HTML5畫布上使用clearRect重繪一個矩形。當使用浮點座標時,clearRect在畫布上留下矩形的邊框。當使用浮點座標時,JavaScript canvas clearRect留下邊框
以下代碼演示了使用浮點的邊框完全清除時使用整數座標的矩形的問題。
<html>
<head>
</head>
<body>
<script type="text/javascript" >
var canvas = document.createElement("canvas");
canvas.width = 100;
canvas.height = 100;
canvas.style.border = "1px solid";
document.body.appendChild(canvas);
var ctx = canvas.getContext("2d");
ctx.fillRect(20.1,20.1,30,30);
ctx.clearRect(20.1,20.1,30,30);
ctx.fillRect(50,50,30,30);
ctx.clearRect(50,50,30,30);
</script>
</body>
</html>
所得畫布看起來像這樣:
我可以通過清除更大區域解決這個問題,但是增加清除和重新繪製相鄰形狀的風險。這是例如在這裏建議:I can't completely clear the transformed rectangle in <canvas>
我可以通過使用整數座標來修復它,但這不是在此應用程序中的一個選項。
是否有其他方法可以使clearRect實際清除所有繪製的矩形而不清除更大的區域或使用整數座標?
好了,我看到了我完全是幾乎一樣令人困惑的通知:-)你能不能詳細闡述「那在這個應用程序中不是一個選項'?爲什麼你不能限制座標總是+ 0.5? – GameAlchemist
我在使用浮點座標和大小的應用程序中使用第三方物理引擎(box2dweb)。但是,我當然可以在繪圖時圍繞座標。我認爲這樣做看起來很奇怪,因爲形狀比他們應該分開的距離更遠。但是我應該在解僱之前嘗試一下,看看沒有其他很好的選擇。 –
也許這就是你的意思,但不要在繪圖時座標「圓形座標」。否則,發動機會迷路。看到我的帖子的結尾。我想知道:你爲什麼要刪除給定的矩形? – GameAlchemist