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 ではないことがわかりました。

VisualTreeHelper がさらに内部で HitTest を実行しないように、MyDrawing を基本的なビジュアル要素にする方法を教えてください。

どうもありがとうございました。

4

1 に答える 1

0

Drawingvisual の代わりに。以下のものを試してください。

  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 に答える