2009-10-12 5 views
9

사용자가 화면에서 컨트롤을 끌 수있는 디자이너를 작성 중입니다. 컨트롤 하나를 드래그하는 동안 다른 컨트롤이 겹치는 경우 가장 좋은 검색 방법은 무엇입니까?2 개의 컨트롤이 WPF의 캔버스에서 서로 겹치는 지 어떻게 확인할 수 있습니까?

FrameworkElement의 치수를 가져 와서 다른 요소의 치수를 계속 확인해야합니까?

감사합니다. Eli

+1

는 경계 사각형이 겹치는 경우에 당신이 알고 싶은 수행 Rect.IntersectsWith 방법, 또는 가시 영역을 사용할 수 있습니까? 예를 들어, 두 개의 타원에는 겹치는 경계 사각형이있을 수 있지만 실제 타원은 만지지 않을 수 있습니다. –

답변

4

요소가 항상 직사각형 인 경우 차원의 치수 (FrameworkElement.ActualWidth FrameworkElement.ActualHeight)와 위치 (Canvas.Top, Canvas.Bottom, Canvas.Left, Canvas.Right)로 충분합니다. 이 경우 두 직사각형이 겹치는 지 쉽게 계산할 수 있습니다. 요소가 더 복잡한 모양 일 수 있으면 털이 나옵니다. WPF에서 두 개의 Visual 인스턴스 교차에 대해 테스트 할 수 있는지 잘 모르겠습니다.

아마도 hittesting을 사용할 수 있습니까? 이 방법을 사용하면 특정 point 또는 geometry이 certian 시각과 교차하는지 최소한 테스트 할 수 있습니다. 따라서 두 번째 시각 경계와 거의 일치하는 지오메트리 또는 점 목록을 정의해야합니다.

17

당신은

+1

WinRT Metro 앱의 경우 교집합이없는 경우 빈 직사각형을 제공하는 Rect.Intersect와있을 때 실제 결과가 나타납니다. –

+1

Tks Den! 나는 이것을 WinRT를 찾고 있었다. – andrecarlucci

관련 문제