Visual.TransformToAncestor 方法

定义

返回一个转换,该转换可用于将 Visual 中的坐标转换为指定的可视对象上级。

重载

TransformToAncestor(Visual3D)

返回一个转换,该转换可用于将 Visual 中的坐标转换为可视对象的指定 Visual3D 上级。

TransformToAncestor(Visual)

返回一个转换,该转换可用于将 Visual 中的坐标转换为可视对象的指定 Visual 上级。

TransformToAncestor(Visual3D)

返回一个转换,该转换可用于将 Visual 中的坐标转换为可视对象的指定 Visual3D 上级。

public:
 System::Windows::Media::Media3D::GeneralTransform2DTo3D ^ TransformToAncestor(System::Windows::Media::Media3D::Visual3D ^ ancestor);
public System.Windows.Media.Media3D.GeneralTransform2DTo3D TransformToAncestor (System.Windows.Media.Media3D.Visual3D ancestor);
member this.TransformToAncestor : System.Windows.Media.Media3D.Visual3D -> System.Windows.Media.Media3D.GeneralTransform2DTo3D
Public Function TransformToAncestor (ancestor As Visual3D) As GeneralTransform2DTo3D

参数

ancestor
Visual3D

要将坐标转换到的 Visual3D

返回

一个转换,该转换可用于将 Visual 中的坐标转换为可视对象的指定 Visual3D 上级。

适用于

TransformToAncestor(Visual)

返回一个转换,该转换可用于将 Visual 中的坐标转换为可视对象的指定 Visual 上级。

public:
 System::Windows::Media::GeneralTransform ^ TransformToAncestor(System::Windows::Media::Visual ^ ancestor);
public System.Windows.Media.GeneralTransform TransformToAncestor (System.Windows.Media.Visual ancestor);
member this.TransformToAncestor : System.Windows.Media.Visual -> System.Windows.Media.GeneralTransform
Public Function TransformToAncestor (ancestor As Visual) As GeneralTransform

参数

ancestor
Visual

要将坐标转换到的 Visual

返回

一个 GeneralTransform 类型的值。

例外

ancestornull

ancestor 不是可视对象的上级。

这些可视对象不相关。

示例

以下标记示例显示两个 StackPanel 对象中嵌套的 TextBlock

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
  <StackPanel Margin="16">
    <StackPanel Margin="8">
      <TextBlock Name="myTextBlock" Margin="4" Text="Hello, world" />
    </StackPanel>
  </StackPanel>
</Window>

以下代码示例显示如何使用 TransformToAncestor 方法检索与包含 Window 相关的 TextBlock 的偏移。 偏移值包含在返回的 GeneralTransform中。

// Return the general transform for the specified visual object.
GeneralTransform generalTransform1 = myTextBlock.TransformToAncestor(this);

// Retrieve the point value relative to the parent.
Point currentPoint = generalTransform1.Transform(new Point(0, 0));
' Return the general transform for the specified visual object.
Dim generalTransform1 As GeneralTransform = myTextBlock.TransformToAncestor(Me)

' Retrieve the point value relative to the parent.
Dim currentPoint As Point = generalTransform1.Transform(New Point(0, 0))

偏移考虑包含 Window 中所有对象的 Margin 值。 在本例中, X 为 28, Y 为 28。

注解

或者,可以使用 VisualTreeHelper.GetOffset 方法检索视觉对象相对于其父对象的偏移量。 偏移值包含在返回的 Vector 值中。

// Return the offset vector for the TextBlock object.
Vector vector = VisualTreeHelper.GetOffset(myTextBlock);

// Convert the vector to a point value.
Point currentPoint = new Point(vector.X, vector.Y);
' Return the offset vector for the TextBlock object.
Dim vector As Vector = VisualTreeHelper.GetOffset(myTextBlock)

' Convert the vector to a point value.
Dim currentPoint As New Point(vector.X, vector.Y)

适用于