UIElement.TransformToVisual(UIElement) Méthode

Définition

Retourne un objet de transformation qui peut être utilisé pour transformer les coordonnées de l’élément UIElement vers l’objet spécifié.

public:
 virtual GeneralTransform ^ TransformToVisual(UIElement ^ visual) = TransformToVisual;
GeneralTransform TransformToVisual(UIElement const& visual);
public GeneralTransform TransformToVisual(UIElement visual);
function transformToVisual(visual)
Public Function TransformToVisual (visual As UIElement) As GeneralTransform

Paramètres

visual
UIElement

Objet à comparer à l’objet actuel afin d’obtenir la transformation.

Si ce paramètre a la valeur Null, la racine de l’arborescence XAML est utilisée.

Retours

Informations de transformation en tant qu’objet. Appelez des méthodes sur cet objet pour obtenir une transformation pratique.

Exemples

Cet exemple montre un scénario d’appel TransformToVisual afin d’interpréter les coordonnées d’un Pointeur dans le cadre de référence de coordonnées d’un élément qui n’est pas l’expéditeur de l’événement. Ici, la queryPointer méthode accède d’abord aux coordonnées qui se rapportent à l’expéditeur, puis utilise TransformToVisual pour convertir les coordonnées de point dans le cadre de référence pour le page conteneur de disposition qui est en fait plusieurs couches de confinement plus haut dans l’arborescence XAML. Pour voir plus de contexte pour ce code (y compris voir comment queryPointer affiche les résultats dans l’interface utilisateur et quand il est appelé), consultez l’exemple de code complet affiché dans la rubrique Gérer l’entrée du pointeur.

    <Page
    x:Class="PointerInput.MainPage"
    IsTabStop="false"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:PointerInput"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Name="page">

    <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="150" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="320" />
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Canvas Name="Container" 
                Grid.Column="0"
                Grid.Row="1"
                HorizontalAlignment="Center" 
                VerticalAlignment="Center" 
                Margin="0,0,0,0" 
                Height="320"  Width="640">
            <Rectangle Name="Target" 
                       Fill="#FF0000" 
                       Stroke="Black" 
                       StrokeThickness="0"
                       Height="320" Width="640" />
        </Canvas>
        <TextBox Name="eventLog" 
                 Grid.Column="1"
                 Grid.Row="0"
                 Grid.RowSpan="3" 
                 Background="#000000" 
                 TextWrapping="Wrap" 
                 Foreground="#FFFFFF" 
                 ScrollViewer.VerticalScrollBarVisibility="Visible" 
                 BorderThickness="0"/>
    </Grid>
</Page>
String queryPointer(PointerPoint ptrPt)
{
    String details = "";

    switch (ptrPt.PointerDevice.PointerDeviceType)
    {
        case Windows.Devices.Input.PointerDeviceType.Mouse:
            details += "\nPointer type: mouse";
            break;
        case Windows.Devices.Input.PointerDeviceType.Pen:
            details += "\nPointer type: pen";
            if (ptrPt.IsInContact)
            {
                details += "\nPressure: " + ptrPt.Properties.Pressure;
                details += "\nrotation: " + ptrPt.Properties.Orientation;
                details += "\nTilt X: " + ptrPt.Properties.XTilt;
                details += "\nTilt Y: " + ptrPt.Properties.YTilt;
                details += "\nBarrel button pressed: " + ptrPt.Properties.IsBarrelButtonPressed;
            }
            break;
        case Windows.Devices.Input.PointerDeviceType.Touch:
            details += "\nPointer type: touch";
            details += "\nrotation: " + ptrPt.Properties.Orientation;
            details += "\nTilt X: " + ptrPt.Properties.XTilt;
            details += "\nTilt Y: " + ptrPt.Properties.YTilt;
            break;
        default:
            details += "\nPointer type: n/a";
            break;
    }

    GeneralTransform gt = Target.TransformToVisual(page);
    Point screenPoint;

    screenPoint = gt.TransformPoint(new Point(ptrPt.Position.X, ptrPt.Position.Y));
    details += "\nPointer Id: " + ptrPt.PointerId.ToString() +
        "\nPointer location (parent): " + ptrPt.Position.X + ", " + ptrPt.Position.Y +
        "\nPointer location (screen): " + screenPoint.X + ", " + screenPoint.Y;
    return details;
}

Remarques

Appelez TransformToVisual afin d’obtenir un décalage de coordonnées entre deux éléments dans une interface utilisateur. Le premier élément pris en compte est l’élément UIElement où vous appelez TransformToVisual, le deuxième élément est le UIElement que vous passez en tant que visual paramètre . Par exemple, vous pouvez utiliser la transformation pour déterminer comment les limites d’un élément sont positionnées dans un système de coordonnées relatif à un élément parent de disposition, plutôt que dans la fenêtre de l’application.

TransformToVisual donne des résultats de coordonnées une fois que toutes les considérations qui affectent le rendu et le positionnement, comme RenderTransform , ont été appliquées. Cela est utile si vous traitez des valeurs de point obtenues lors d’une animation de ou d’autres changements de RenderTransform position.

Le scénario le plus courant pour TransformToVisual est si vous souhaitez utiliser un système de coordonnées local par rapport à l’UIElement sur lequel vous l’appelez, et vous ne gérez pas un événement d’entrée en temps réel qui a des méthodes de données d’événement pour convertir une valeur Point dans le cadre de référence de l’objet. Après avoir appelé TransformToVisual, vous pouvez appeler TransformPoint sur le GeneralTransform retourné.

Notes

L’objet GeneralTransform retourné par cette méthode peut être converti en un type dérivé, Transform, mais toutes les méthodes dont vous avez besoin sont définies par GeneralTransform. Vous ne pouvez pas effectuer un cast en TranslateTransform , même si vous pouvez vous attendre à ce que le résultat de la transformation soit une traduction.

S’applique à

Voir aussi