Erweitern Minimieren

UIElement.TransformToVisual Method

Gibt ein Transformationsobjekt zurück, mit dem Koordinaten des UIElement in das angegebene Objekt transformiert werden können.

Syntax


public GeneralTransform TransformToVisual(
  UIElement visual
)

Parameter

visual

Typ: UIElement

Das Objekt, das mit dem aktuellen Objekt verglichen werden soll, um die Transformation zu erhalten.

Rückgabewert

Typ: GeneralTransform

Die Transformationsinformationen als Objekt. Rufen Sie Methoden für dieses Objekt auf, um eine zweckmäßige Transformation zu erhalten.

Hinweise

Rufen Sie TransformToVisual auf, um ein Koordinatenoffset zwischen zwei Elemente in einer UI zu erhalten. Das erste berücksichtigte Element ist das UIElement, in dem Sie TransformToVisual aufrufen. Das zweite Element ist das UIElement, das Sie als visual-Parameter übergeben. Sie können beispielsweise die Transformation verwenden, um zu ermitteln, wie die Grenzen eines Elements in einem Koordinatensystem positioniert sind, das relativ zu einem übergeordneten Layoutelement, statt zum Fenster der App ist.

TransformToVisual gibt Koordinatenergebnisse an, nachdem alle Aspekte hinsichtlich Rendering und Positionierung wie RenderTransform angewendet wurden. Dies ist hilfreich, wenn Sie Punktwerte verarbeiten, die während einer Animation der RenderTransform-Eigenschaft oder anderer Positionsänderungen abgerufen wurden.

Das häufigste Szenario für TransformToVisual ist, die Verwendung eines lokalen Koordinatensystem relativ zu UIElement, das Sie aufrufen, und kein Echtzeiteingabeereignis behandeln, das über Ereignisdatenmethoden zum Konvertieren eines Point-Werts in das Bezugssystem des Objekts verfügt. Nach dem Aufruf von TransformToVisual können Sie TransformPoint für die zurückgegebene GeneralTransform aufrufen.

Hinweis  Das durch diese Methode zurückgegebene GeneralTransform-Objekt kann in einen abgeleiteten Transform-Typ umgewandelt werden, aber alle Methoden, die Sie benötigen, werden von GeneralTransform definiert. Sie können nicht in TranslateTransform umwandeln, auch wenn Sie möglicherweise erwarten, dass das Transformationsergebnis eine Übersetzung würde.

Beispiele

In diesem Beispiel wird ein Szenario für das Aufrufen von TransformToVisual gezeigt, um die Koordinaten von einem PointerPoint im Koordinatenbezugsframe eines Elements zu interpretieren, das nicht der Ereignissender ist. Hier greift die queryPointer-Methode zuerst auf Koordinaten zu, die dem Absender zugeordnet sind (das ist der GetCurrentPoint-Aufruf in der ersten Zeile der Methode). Dann jedoch später verwendet sie TransformToVisual, um Punktkoordinaten in den Bezugsframe für den page-Layoutcontainer zu konvertieren, der sich mehrere Kapselungsebenen oberhalb in der XAML befindet. Um weiteren Kontext für diesen Code zu sehen (und um z. B. auch zu sehen, wie queryPointer nach dem Aufruf Ergebnisse auf der Benutzeroberfläche anzeigt), beachten Sie das vollständige Codebeispiel im Thema Schnellstart: Zeiger.


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


Anforderungen

Mindestens unterstützter Client

Windows 8

Mindestens unterstützter Server

Windows Server 2012

Namespace

Windows.UI.Xaml
Windows::UI::Xaml [C++]

Metadaten

Windows.winmd

Siehe auch

UIElement
GeneralTransform
Schnellstart: Definieren von Layouts
Beispiel für zweidimensionale XAML-Transformationen

 

 

Anzeigen:
© 2014 Microsoft