本文整理汇总了C#中System.Windows.Media.HitTestResult.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# HitTestResult.GetType方法的具体用法?C# HitTestResult.GetType怎么用?C# HitTestResult.GetType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Media.HitTestResult
的用法示例。
在下文中一共展示了HitTestResult.GetType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AsNearestPointHitTestResult
/// <summary>
/// Converts the given point or ray hit test result into a PointHitTestResult.
/// In the case of a RayHitTestResult this is done by walking up the
/// transforming the 3D intersection into the coordinate space of the
/// Viewport3DVisual which contains the Visual3D subtree.
/// </summary>
internal static PointHitTestResult AsNearestPointHitTestResult(HitTestResult result)
{
if (result == null)
{
return null;
}
PointHitTestResult resultAsPointHitTestResult = result as PointHitTestResult;
if (resultAsPointHitTestResult != null)
{
return resultAsPointHitTestResult;
}
RayHitTestResult resultAsRayHitTestResult = result as RayHitTestResult;
if (resultAsRayHitTestResult != null)
{
Visual3D current = (Visual3D) resultAsRayHitTestResult.VisualHit;
Matrix3D worldTransform = Matrix3D.Identity;
while (true)
{
if (current.Transform != null)
{
worldTransform.Append(current.Transform.Value);
}
Visual3D parent3D = current.InternalVisualParent as Visual3D;
if (parent3D == null)
{
break;
}
current = parent3D;
}
Viewport3DVisual viewport = current.InternalVisualParent as Viewport3DVisual;
if (viewport != null)
{
Point4D worldPoint = ((Point4D)resultAsRayHitTestResult.PointHit) * worldTransform;
Point viewportPoint = viewport.WorldToViewport(worldPoint);
return new PointHitTestResult(viewport, viewportPoint);
}
Debug.Fail("How did a ray hit a Visual3D not parented to a Viewport3DVisual?");
return null;
}
Debug.Fail(String.Format("Unhandled HitTestResult type '{0}'", result.GetType().Name));
return null;
}