Я пытался сопоставить ориентацию видеобраша с ориентацией телефона, но у меня возникли проблемы с реализацией этого решения. Моя страница xaml настроена на PortraitOrLandscape, и я хотел бы, чтобы видеокисть была правильной стороной независимо от ориентации телефона. Перед добавлением оператора if для изменения ориентации в событие onOrentationChanged возникает следующая ситуация
Телефон:Пейзаж слева, Видеокисть:справа вверх
Телефон:Портрет, Видеокисть, повернута -90 по часовой стрелке
Phone:Пейзаж вправо, Videobrush, повернутый -180 по часовой стрелке
XAML
<Rectangle x:Name="videoRectangle" Margin="0,0,0,0">
<Rectangle.Fill>
<VideoBrush x:Name="viewfinderBrush" AlignmentX="Left" AlignmentY="Top" Stretch="UniformToFill">
<VideoBrush.RelativeTransform>
<CompositeTransform x:Name="viewfinderTransform"
CenterX="0.5" CenterY="0.5"/>
</VideoBrush.RelativeTransform>
</VideoBrush>
</Rectangle.Fill>
</Rectangle>
XAML.CS
protected override void OnOrientationChanged(OrientationChangedEventArgs e)
{
base.OnOrientationChanged(e);
if (e.Orientation == PageOrientation.LandscapeLeft)
{ //do nothing
//The videobrush orientation is currently right side up
}
if (e.Orientation == PageOrientation.Portrait)
{
//the videobrush is currently rotated 90 degrees counter clockwise
this.viewfinderTransform.Rotation = this.camera.Orientation + 90.0;
}
if (e.Orientation == PageOrientation.LandscapeRight)
{
//the videobrush is currently rotated 180 degrees counter clockwise
this.viewfinderTransform.Rotation = this.camera.Orientation + 180;
}
}
А после добавления операторов if ориентация видеобраша становится еще более безумной. Что я делаю неправильно? Я просто хотел бы, чтобы видеокисть была ориентирована правой стороной вверх, независимо от ориентации телефона.