2012-06-27 3 views
1

WPF에서 VisualCollection, Visual 및 HitTest를 사용하여 문제가 발생했습니다. VisualCollection에서 Visual HitTest까지 보이지 않습니까?

public class MyDrawing : Visual 
{ 
    VisualCollection vc; 

    public MyDrawing() 
    { 
     vc = new VisualCollection(this); 
    } 

    // ... 
    DrawingVisual rectangle = new DrawingVisual(); 
    // ... 

    vc.Add(rectangle); 
} 

public class DrawingArea : FrameworkElement 
{ 
    VisualCollection vc; 

    public DrawingArea() 
    { 
     vc = new VisualCollection(this); 

     MyDrawing md1 = new MyDrawing(); 

     vc.Add(md1); 
    }  

    public void TryToHit(Point p) 
    {  
     HitTestResult result = VisualTreeHelper.HitTest(this, p); 
    }  
} 

가 그럼 난 결과가 직사각형이 아닌 MD1 발견 :

나는 다음과 같이 정의 시각적 인 그림을 만들기 위해 노력했다.

VisualTreeHelper가 HitTest를 내부에서 수행하지 않도록 MyDrawing을 기본 Visual 요소로 만들려면 어떻게해야합니까?

대단히 감사합니다.

+2

참조 [비주얼 계층에서 적중 테스트 (http://msdn.microsoft.com/en-us/library/ms752097.aspx), 특히 섹션 ([적중 테스트 필터 콜백을 사용] HTTP : //msdn.microsoft.com/ko-kr/library/ms752097.aspx#using_a_hit_test_filter_callback). – Clemens

+0

시도한 것에 대한 구체적인 예를 추가하십시오. – gliderkite

답변

0

Drawingvisual 대신. 아래의 방법을 시도해보십시오.

public class NoHitTestDrawingVisual : DrawingVisual 
    { 

     protected override GeometryHitTestResult HitTestCore(GeometryHitTestParameters hitTestParameters) 
     { 
      return null; 
     } 

     protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters) 
     { 
      return null; 
     } 

    } 
+0

부모 영상 (여기서는'MyDrawing md1') 자체가 렌더링 (따라서 히트 테스트 가능) 된 내용이 아니라면이 기능이 작동하지 않을까 걱정됩니다. – Clemens