Visual.TransformToAncestor Método

Definição

Retorna uma transformação que pode ser usada para transformar as coordenadas do Visual no ancestral especificado do objeto visual.

Sobrecargas

TransformToAncestor(Visual3D)

Retorna uma transformação que pode ser usada para transformar as coordenadas do Visual para o ancestral Visual3D especificado do objeto visual.

TransformToAncestor(Visual)

Retorna uma transformação que pode ser usada para transformar as coordenadas do Visual para o ancestral Visual especificado do objeto visual.

TransformToAncestor(Visual3D)

Retorna uma transformação que pode ser usada para transformar as coordenadas do Visual para o ancestral Visual3D especificado do objeto visual.

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

Parâmetros

ancestor
Visual3D

O Visual3D para o qual as coordenadas são transformadas.

Retornos

GeneralTransform2DTo3D

Uma transformação que pode ser usada para transformar as coordenadas do Visual para o ancestral Visual3D especificado do objeto visual.

Aplica-se a

TransformToAncestor(Visual)

Retorna uma transformação que pode ser usada para transformar as coordenadas do Visual para o ancestral Visual especificado do objeto 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

Parâmetros

ancestor
Visual

O Visual para o qual as coordenadas são transformadas.

Retornos

GeneralTransform

Um valor do tipo GeneralTransform.

Exceções

ancestor é null.

O ancestor não é um ancestral de visual.

Os objetos visuais não estão relacionados.

Exemplos

O exemplo de marcação a seguir mostra um TextBlock aninhado em dois StackPanel objetos.

<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>

O exemplo de código a seguir mostra como usar o TransformToAncestor método para recuperar o deslocamento do TextBlock relativo ao que contém Window. Os valores de deslocamento estão contidos no retornado 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))

O deslocamento leva em conta os Margin valores de todos os objetos dentro da contenção Window. Nesse caso, X é 28 e Y é 28.

Comentários

Como alternativa, você pode usar o VisualTreeHelper.GetOffset método para recuperar o deslocamento de um objeto visual em relação ao pai. Os valores de deslocamento estão contidos no valor retornado 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)

Aplica-se a