public static int GetRotationAngle(this ElementOrientations elementOrientation, OrientationOrigins orientationOrigin = OrientationOrigins.Auto) { int rotationAngle = 0; var displayInfo = DisplayInformation.GetForCurrentView(); var currentOrientation = displayInfo.CurrentOrientation; DisplayOrientations targetOrientation; switch (orientationOrigin) { default: case OrientationOrigins.Auto: targetOrientation = currentOrientation; break; case OrientationOrigins.Native: targetOrientation = displayInfo.NativeOrientation; break; case OrientationOrigins.AutoRotationPreference: targetOrientation = DisplayInformation.AutoRotationPreferences; break; } switch (elementOrientation) { case ElementOrientations.Auto: case ElementOrientations.Reverse: rotationAngle = 0; break; case ElementOrientations.Fixed: case ElementOrientations.ReverseFixed: if (orientationOrigin == OrientationOrigins.Auto && targetOrientation == currentOrientation) { rotationAngle = 0; } else { rotationAngle = targetOrientation.GetRotationAngle(); rotationAngle += currentOrientation.GetRotationAngle(); } break; } switch (elementOrientation) { case ElementOrientations.Reverse: case ElementOrientations.ReverseFixed: rotationAngle -= 180; break; } return(rotationAngle); }
public static void SetElementOrientation(DependencyObject element, ElementOrientations value) { (element as FrameworkElement).SetValue(ElementOrientationProperty, value); }