Hit Testing
VisualTreeHelper
class
提供了可视化对象之间的Hit Testing的方法
.
Enumerating the Visual Tree
VisualTreeHelper
class
提供了枚举
visual tree
的成员的功能。得到父节点。调用
GetParent
方法
.
取得孩子节点
,
或者可视对象的直接后继
,
调用
GetChild
方法
.
visual tree
可以使用下面的算法,很容易的遍历
C#
// Enumerate all the descendants of the visual object.
static public void EnumVisual(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = VisualTreeHelper.GetChild(myVisual, i);
// Do processing of the child visual object.
// Enumerate children of the child visual object.
EnumVisual(childVisual);
}
}
VisualTreeHelper
class
提供了返回可视对象包围矩形的方法。可以调用
GetContentBounds
返回可视对象包围矩形
.
还可以返回
visual object
的所有子孙的包围矩形
,
需要调用
GetContentBounds
.
下面的代码显示了怎么计算一个可视对象和它的所有子孙的包围矩形。
C#
// Return the bounding rectangle of the parent visual object.
Rect rectBounds = VisualTreeHelper.GetContentBounds(parentVisual);
// Expand the rectangle to include the bounding rectangle
// of the all of the visual object's descendants.
rectBounds.Union(VisualTreeHelper.GetDescendantBounds(parentVisual))