1

我正在使用 WPF 中的 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。

我怎样才能使 MyDrawing 成为基本的 Visual 元素,以便 VisualTreeHelper 不会进一步在里面做 HitTest?

非常感谢。

4

1 回答 1

0

而不是绘图视觉。试试下面的一个。

  public class NoHitTestDrawingVisual : DrawingVisual
    {

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

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

    }
于 2012-06-27T08:20:58.880 回答