ビデオブラシの向きを電話の向きに合わせようとしていますが、このソリューションの実装に問題があります。私の xaml ページは PortraitOrLandscape に設定されており、携帯電話の向きに関係なく、ビデオブラシを正しく表示したいと考えています。onOrentationChanged イベントに向きを変える if 文を追加する前に、次のような状況が発生しています。
Phone: 横向き左、Videobrush: 右向き
電話: ポートレート、ビデオブラシ、時計回りに -90 度回転
電話: 横向き右、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 ステートメントを追加した後、ビデオブラシの向きはさらにクレイジーになります。私は何を間違っていますか?電話の向きに関係なく、ビデオブラシを正しい向きにしたいだけです。