Visual.TransformToAncestor Método

Definición

Devuelve una transformación que se puede usar para transformar las coordenadas desde el objeto Visual en el antecesor especificado del objeto visual.

Sobrecargas

TransformToAncestor(Visual3D)

Devuelve una transformación que se puede usar para transformar las coordenadas desde el objeto Visual en el antecesor del objeto Visual3D especificado del objeto visual.

TransformToAncestor(Visual)

Devuelve una transformación que se puede usar para transformar las coordenadas desde el objeto Visual en el antecesor del objeto Visual especificado del objeto visual.

TransformToAncestor(Visual3D)

Devuelve una transformación que se puede usar para transformar las coordenadas desde el objeto Visual en el antecesor del objeto Visual3D especificado del 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

Objeto Visual3D en el las coordenadas se transforman.

Devoluciones

Una transformación que se puede usar para transformar las coordenadas de Visual en el antecesor del objeto Visual3D especificado del objeto visual.

Se aplica a

TransformToAncestor(Visual)

Devuelve una transformación que se puede usar para transformar las coordenadas desde el objeto Visual en el antecesor del objeto Visual especificado del 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

Objeto Visual en el las coordenadas se transforman.

Devoluciones

Valor de tipo GeneralTransform.

Excepciones

ancestor es null.

El objeto ancestor no es ningún antecesor del objeto visual.

Los objetos visuales no están relacionados.

Ejemplos

En el ejemplo de marcado siguiente se muestra un TextBlock que está anidado dentro de dos objetos StackPanel.

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

En el ejemplo de código siguiente se muestra cómo usar el método TransformToAncestor para recuperar el desplazamiento de TextBlock con respecto al contenedor Window. Los valores de desplazamiento se encuentran en el devuelto 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))

El desplazamiento tiene en cuenta los valores Margin de todos los objetos dentro del contenedor Window. En este caso, X es 28 y Y es 28.

Comentarios

Como alternativa, puede usar el VisualTreeHelper.GetOffset método para recuperar el desplazamiento de un objeto visual con respecto a su elemento primario. Los valores de desplazamiento están incluidos en el valor devuelto 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)

Se aplica a