2009-12-09 2 views
0

선, 직사각형, 타원을 그린 다음 모양을 클릭하고 mousemove 이벤트로 이동하려고합니다. 어떤 물체가 선택 되나?C# 끌기 이미지 객체

+0

"타원"이라고 생각합니다. Eclipse는 오픈 소스 IDE입니다. :) –

+0

방금 ​​수정했습니다. 감사합니다. Andy – Thyphuong

답변

1

그리는 도형을 GraphicsPaths로 저장하고 MouseMove에서 반복하고 IsVisible (Point)을 사용하여 현재 마우스 위치가 도형의 경계 안에 있는지 확인할 수 있습니다.

+0

좋습니다. 이것은 제가 권장하는 것보다 더 우아한 해결책입니다. GraphicsPath에 대해 알려 주셔서 감사합니다. –

+0

하지만 내가 그리는 모든 모양은 Graphics.draw (drawrectangle, drawline 등 ...)와 같습니다. 그러면 GraphicsPath를 어떻게 사용할 수 있습니까? – Thyphuong

+0

@Thyphuong : 새로운 GraphicsPath 개체를 만들고 AddRectangle 메서드를 사용하여 사각형을 GraphicsPath로 변환 할 수 있습니다. 모든 도형에 대해 Add 메서드가 있으므로 그리는 모든 것을 변환 할 수 있어야합니다. @ 앤디 웨스트 : 감사합니다. –

0

클릭 한 포인트가 도형 내에 있는지 확인하려면 억제 테스트를 수행해야합니다. 포인트는 원 안에 될 수 있도록 예를 들어, 다음은 true로 평가해야합니다

Math.Pow(x - centerX, 2) + Math.Pow(y - centerY, 2) <= Math.Pow(radius, 2) 

또한 Z-order (레이어)의 일종을 구현해야합니다. 귀하의 포인트를 포함하는 모든 셰이프의 목록을 얻은 후에, Z 순서의 상단에있는 하나를 선택하고 그것은 당신이 선택한 모양입니다.

+0

답장을 보내 주셔서 감사합니다. 따라서 우리는 단지 조화로 형체를 얻을 수 있고, 그것을 오브제로 바꾸고 그것을 얻을 수 없다는 것을 의미합니다. 권리? – Thyphuong

+0

모양을 직접 저장하고 유지해야합니다. GDI + 스타일의 그림을 그리는 경우 픽셀을 채색하는 것입니다. Graphics 객체는 모양을 그린 후에 모양에 대해 알지 못합니다. –