0

MSDNのこのページは、概念が明確な HitTest の使用例を表しています...しかし、私が取得していないことの 1 つは、C# コードが hitResultsList として指すリストです。私はそれを次のようにリストとして宣言しようとしました:

List<myShapeClass> hitResultsList = new List<myShapeClass>();

ただし、型キャスト エラーが発生します。どんな助けでも大歓迎です。質問は、一般的に HitTesting にどのような種類のリストを使用すればよいですか?

コードはここにあります:

// Respond to the right mouse button down event by setting up a hit test results callback. 
private void OnMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    // Retrieve the coordinate of the mouse position.
    Point pt = e.GetPosition((UIElement)sender);

    // Clear the contents of the list used for hit test results.
    hitResultsList.Clear();

    // Set up a callback to receive the hit test result enumeration.
    VisualTreeHelper.HitTest(myCanvas, null,
        new HitTestResultCallback(MyHitTestResult),
        new PointHitTestParameters(pt));

    // Perform actions on the hit test results list. 
    if (hitResultsList.Count > 0)
    {
        Console.WriteLine("Number of Visuals Hit: " + hitResultsList.Count);
    }
}

ありがとう。

4

1 に答える 1

2

キーは、コールバック内にあります。

// Return the result of the hit test to the callback. 
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
    // Add the hit test result to the list that will be processed after the enumeration.
    hitResultsList.Add(result.VisualHit);

    // Set the behavior to return visuals at all z-order levels. 
    return HitTestResultBehavior.Continue;
}

result.VisualHitを追加してresultいることに注意してくださいHitTestResult。したがって、そのメンバー ( http://msdn.microsoft.com/en-us/library/system.windows.media.hittestresult.visualhit.aspx ) を調べると、DependencyObject.

だからあなたが欲しい:List<DependencyObject>

于 2012-08-22T18:30:10.670 に答える