UIElement.TransformToVisual(UIElement) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne un objet de transformation qui peut être utilisé pour transformer les coordonnées de l’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 à des fins d’obtention de la transformation.
Si ce paramètre est 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 pour 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 d’événement. Ici, la queryPointer méthode accède d’abord aux coordonnées qui se rapportent à l’expéditeur, mais utilise TransformToVisual ensuite pour convertir les coordonnées de point dans le cadre de référence du page conteneur de disposition qui est en fait plusieurs couches d’isolement plus élevées dans l’arborescence XAML. Pour voir plus de contexte pour ce code (notamment voir comment queryPointer afficher les résultats dans l’interface utilisateur et quand il est appelé), consultez l’exemple de code complet présenté dans la rubrique Gérer l’entrée de 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 pour obtenir un décalage de coordonnées entre deux éléments d’une interface utilisateur. Le premier élément considéré est l’UIElement où vous appelez TransformToVisual, le deuxième élément est le UIElement paramètre 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 la fenêtre de l’application.
TransformToVisual donne des résultats de coordonnées après toutes les considérations qui affectent le rendu et le positionnement tels que RenderTransform ont été appliqués. Cela est utile si vous traitez des valeurs de point obtenues lors d’une animation ou d’autres modifications de RenderTransform position.
Le scénario TransformToVisual le plus courant est que si vous souhaitez utiliser un système de coordonnées local par rapport à l’UIElement sur lequel vous l’appelez, et que 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 l’image de référence de l’objet. Après l’appel TransformToVisual, vous pouvez ensuite appeler TransformPoint sur le GeneralTransform retourné.
Note
L’objet GeneralTransform retourné par cette méthode peut être converti en type dérivé, Transform, mais toutes les méthodes dont vous avez besoin sont définies par GeneralTransform. Vous ne pouvez pas effectuer de conversion en TranslateTransform , même si vous pouvez vous attendre à ce que le résultat de la transformation soit une traduction.