2013-07-12 2 views
1

사각형 (원/원)과 같은 도형을 그릴 수 있고 색상으로도 채울 수있는 win forms 애플리케이션이 있습니다. 이제 셰이프를 채우기 위해 브러시를 선택하고 모양의 '경계'를 클릭하면 (이 경우 모양을 채우고 싶지는 않습니다) '포인트' 모양의 경계 (즉, '가장자리')에 있습니다.도형의 경계 (즉, '모서리')에 점이 있는지 감지하는 방법

답변

1

모양을 GraphicsPath로 표시 한 다음 IsOutlineVisible을 사용하여 요점은 윤곽선 아래에있다.

IsVisible() 메서드는 포인트가 전체 GraphicsPath 내에 있는지 알려줍니다.

+0

좋은 답변입니다! GraphicsPath에 대해 몰랐습니다! +1 – giammin

+0

@ 아이드 마인드 : 고마워요. 나는 이것을 결코 발견하지 못했을 것이다. –

+0

.Net은 큰 세상입니다. 저는 이것을 10 년 동안 사용해 왔으며 여전히 "새로운"기능을 발견하고 있습니다. 적어도 그들은 나에게 "새롭다"! –

1

두 가지 모양의 좌표가 있습니다.

shape.Height 
shape.Width 

당신은 또한 모양의 크기가

shape.X 
shape.Y 

당신은 마우스 위치의 좌표를 mouse.X이 shape.X 및 shape.X 사이 인 경우

mouse.X 
mouse.Y 

+ 모양. 너비와 마우스 .Y는 모양과 동일합니다 .Y 또는 모양 .Y + 모양. 사각형과 같은 높이.

하지만 "일반"모양은 복잡하고 불규칙한 형태를 들어 similarway

에서 그것을 계산해야 당신은에 작은 조각으로 안정을 잃게하다와 같은 계산을 수행해야합니다

확인이 : determine if a point sits inside an arbitrary shape?

모양이 할 수있는 경우를 비트 맵으로 변환 할 수있는 다른 방법은 픽셀 색상을 확인할 수 있지만 모양 가장자리 색상이 모양의 다른 픽셀과 다른 경우에만 작동합니다.

관련 문제