내 캔버스에 테두리가있는 정사각형을 완벽하게 그릴 수 있습니다. 그러나 clearRect()
함수를 사용하여이 정사각형 테두리 모양을 지우려고하면 일부 획이 지워지지 않습니다.HTML5 캔버스에서 strokeRect() 지우기
HTML
<div>
<canvas width="300" height="250">
</canvas>
</div>
var $context = $('canvas')[0].getContext('2d'); // Create 4 filled squares $context.fillStyle = 'pink'; $context.fillRect(120, 0, 30, 30); $context.fillRect(120, 30, 30, 30); $context.fillRect(150, 0, 30, 30); $context.fillRect(150, 30, 30, 30); // Create borders around them $context.strokeRect(120, 0, 30, 30); $context.strokeRect(120, 30, 30, 30); $context.strokeRect(150, 0, 30, 30); $context.strokeRect(150, 30, 30, 30); // Now erase the squares (individually) $context.clearRect(120, 0, 30, 30); $context.clearRect(120, 30, 30, 30); $context.clearRect(150, 0, 30, 30); $context.clearRect(150, 30, 30, 30);
JS
jsFiddle here를 참조하십시오.더 자세히 살펴본 후에 clearRect()
함수는 실제로 내 strokeRect()
호출에서 획을 지우지 않는 것으로 보입니다. 그래서 생각하고 있었는데, 아마도 내가해야 할 일은 strokeStyle
이 ‘white’
인 경계를 그리는 것입니다. 그러나, 내가 이것을 할 때 (새로운 바이올 here), 이것은 하얀 획을 페인트하지만 128의 알파 값으로 만 보인다! 내 globalAlpha
이 1로 설정되었습니다 ... 완전히 불투명하지 않아야합니까?
여기서는 무엇을 이해하지 못하겠습니까? clearRect()
은 strokeRect()
에 대한 통화가 명확하지 않습니까? 그리고 만약 아니라면, 솔루션은 기존의 strokeRect()
을 덮어 쓰지 만 흰색의 색을 사용해야합니까?
캔버스를 지우는 것만으로는 안되지만 한 번에 한 칸씩 지워야합니다.
미리 감사드립니다.
'clearRect()'가 정상적으로 작동합니다. 스톡스는 그릴 때 그 너비가 있습니다. 바깥 쪽과 안쪽 모두에서 그려졌습니다. 'clearRect'를 확장하면됩니다. 또한 '획'에는 일부 알파가 있습니다. –
@SpencerWieczorek -'clearRect()'함수를 '확장'하는 방법을 모릅니다. 'clearRect()'를 호출하기 전에'lineWidth'를 기본값 인 1 대신에 2로 설정하려고했습니다. 그러나이 정도는 아닙니다. 구체적으로 사각형을 지우려면 바깥 쪽과 안쪽을 설정 하시겠습니까? –
'clearRect()'가 각 방향으로 1 픽셀 더 가리도록하십시오. 예를 들어, '30x30'영역을 지우는 경우,'32x32'를 지우십시오. –