2016-12-07 8 views
1

Drehen jemand weiß, wie Soft auf dem Bildschirm Tasten drehen, wenn die Ausrichtung in C#, Windows Phone 10 ändert?Drehen Sie auf dem Bildschirm Tasten auf Windows-Telefon UWP

Ich möchte die Ausrichtung im Hoch- oder Querformat beibehalten, um Animationen zu vermeiden, wenn sich die Ausrichtung der Anzeige ändert. Ich kann alle Inhaltsschaltflächen auf DeviceOrientation.OrientationChanged-Ereignis drehen, aber ich weiß nicht, ob es eine Möglichkeit gibt, auf Bildschirmschaltflächen zuzugreifen und zu drehen.

Ich habe severischen Antworten gefunden, die markiert sind als wie diese beantwortet: UWP C# Disable Orientation Change Animation aber sie alle darüber reden, wie zu erkennen, ob Ausrichtung geändert wird. Ich kann kein Beispiel dafür finden, wie man weiche Bildschirmtasten dreht.

Der Effekt sollte wie auf Windows Phone native Kamera sein.

Antwort

0

können Sie den Orientierungssensor verwenden, um Ihre device`s Orientierung, und dann setzen Engel Ihrer Button.Projection

Referenz Links: https://msdn.microsoft.com/en-us/windows/uwp/devices-sensors/use-the-orientation-sensor

public sealed partial class MainPage : Page 
{ 
    private SimpleOrientationSensor simpleorientation; 
    private double? Current = 0; 

    public MainPage() 
    { 
     this.InitializeComponent(); 
     simpleorientation = SimpleOrientationSensor.GetDefault(); 
     if (simpleorientation != null) 
     { 
      simpleorientation.OrientationChanged += new TypedEventHandler<SimpleOrientationSensor, SimpleOrientationSensorOrientationChangedEventArgs>(OrientationChanged); 
     } 
    } 

    private async void OrientationChanged(SimpleOrientationSensor sender, SimpleOrientationSensorOrientationChangedEventArgs args) 
    { 
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
     { 
      SimpleOrientation orientation = args.Orientation; 
      switch (orientation) 
      { 
       case SimpleOrientation.NotRotated: 
        Rotate(0); 
        break; 

       case SimpleOrientation.Rotated90DegreesCounterclockwise: 
        Rotate(90); 
        break; 

       case SimpleOrientation.Rotated180DegreesCounterclockwise: 
        Rotate(180); 
        break; 

       case SimpleOrientation.Rotated270DegreesCounterclockwise: 
        Rotate(270); 
        break; 

       case SimpleOrientation.Faceup: 
        break; 

       case SimpleOrientation.Facedown: 
        break; 

       default: 

        break; 
      } 
     }); 
    } 

    private void Rotate(double value) 
    { 
     MyAnimation.From = Current; 
     MyAnimation.To = (360 - value); 
     myStoryBoard.Begin(); 
     Current = MyAnimation.To; 
    } 
} 

XAML-Code:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Button 
     x:Name="TestButton" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     Content="button"> 
     <Button.Projection> 
      <PlaneProjection x:Name="Projection" RotationZ="0" /> 
     </Button.Projection> 
    </Button> 
    <Grid.Resources> 
     <Storyboard x:Name="myStoryBoard"> 
      <DoubleAnimation 
       x:Name="MyAnimation" 
       Storyboard.TargetName="Projection" 
       Storyboard.TargetProperty="RotationZ" 
       Duration="0:0:1" /> 
     </Storyboard> 
    </Grid.Resources> 
</Grid> 
+0

Danke für die Antwort. Belebt das nicht einfach Buttons, die ich im Raster auf den Bildschirm lege? Ich bin daran interessiert, Hardware auf Bildschirmtasten zu drehen. – user2081328

Verwandte Themen