0

MSDN上的这个页面代表了一个使用 HitTest 的示例,该示例在概念上很清楚......但我没有得到的一件事是列表 C# 代码指向作为 hitResultsList。我试图将其声明为 List 为:

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,并且resultHitTestResult. 因此,如果您查找该成员(http://msdn.microsoft.com/en-us/library/system.windows.media.hittestresult.visualhit.aspx),您会发现它是一个DependencyObject.

所以你想要:List<DependencyObject>

于 2012-08-22T18:30:10.670 回答