Visual.TransformToAncestor Método

Definição

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

Sobrecargas

Nome Description
TransformToAncestor(Visual3D)

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

TransformToAncestor(Visual)

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

TransformToAncestor(Visual3D)

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

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

Aplica-se a

TransformToAncestor(Visual)

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

Um valor do tipo GeneralTransform.

Exceções

ancestor é null.

ancestor não é um ancestral do 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