2011-03-11 4 views
0

상자를 스케치하고 상자를 채우는 것이 다른 크기의 상자로 이어지는 것을 눈치 챘습니다. 히트 감지를 처리 ​​할 때 약간의 두통입니다. 예를 들어 제가 스케치하고있는 원과 드로잉 할 직사각형이있는 경우 애니메이션을 위해이 둘이 교차 하는지를 알고 싶습니다. 이 주변에 어쨌든 있습니까? 간단한 해결책은 선 너비를 0으로 설정하는 것이지만 옵션이 아닙니다.html 캔버스 스케치 vs 폭 채우기

답변

1

선 처리 된 객체에 대한 계산에 lineWidth를 추가해야합니다.

fillRect(0,0,60,60)을 호출하면 60x60 상자가 (0,0)에서 시작하지만 줄을 쓰는 경우 각면의 절반을 추가해야합니다.

lineWidth가 6 일 때 strokeRect(0,0,60,60)을 호출하면 (-3,-3)에서 시작하는 66x66 상자가 표시됩니다.

수치 연산은 미세 조정으로 인해 약간 다를 수 있지만 대부분의 응용 프로그램에서는 무시할 수 있습니다.

프로그램으로 날아갈 수도 있고 그렇지 않을 수도있는 간단한 솔루션은 채워진 각 개체에 대해 fillRect 및 strokeRect를 호출하는 것입니다. 오브젝트는 약간 커지 만, 스트로크 된 오브젝트와 일관되게 크기가 지정됩니다. 이 접근 방식의 타당성은 물론 지금까지 작성한 방식에 달려 있습니다.

+1

정확히 내가 찾던 것을 고맙습니다. – puk