Windows phone 8.1 在Windows Phone 8.1中设置CaptureElement宽度以填充父区域

Windows phone 8.1 在Windows Phone 8.1中设置CaptureElement宽度以填充父区域,windows-phone-8.1,winrt-xaml,contentcontrol,image-capture,Windows Phone 8.1,Winrt Xaml,Contentcontrol,Image Capture,以下帖子:我尝试构建自己的照片捕获Windows Phone 8.1 WinRT应用程序。但即使我将ContentControl的水平和垂直内容对齐设置为拉伸,我的CaptureElement也非常小(大约100px/80px) 这是我的xaml <Grid Margin="0,20,0,0"> <Grid.RowDefinitions> <RowDefinition Height="*"/> &

以下帖子:我尝试构建自己的照片捕获Windows Phone 8.1 WinRT应用程序。但即使我将ContentControl的水平和垂直内容对齐设置为拉伸,我的CaptureElement也非常小(大约100px/80px)

这是我的xaml

<Grid Margin="0,20,0,0">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <ContentControl Content="{Binding CaptureElement}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,20" Grid.Row="0"
                                        HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
                                        Visibility="{Binding IsInCaptureMode, Converter={StaticResource BoolToVisibilityConverter}}"/>


        <Button Grid.Row="1" Content="Take" Command="{Binding TakePhotoCommand}"
                                Visibility="{Binding IsInCaptureMode, Converter={StaticResource BoolToVisibilityConverter}}"/>
</Grid>
当我试着改变CaptureElement的属性时,如下图所示,CaptureElement的高度就像我的设备的屏幕,所以它是可以的,但是宽度仍然是80~100像素

this.CaptureElement = new CaptureElement
       {
          HorizontalAlignment = HorizontalAlignment.Stretch,
          VerticalAlignment = VerticalAlignment.Stretch,
          Stretch = Stretch.Fill,
       };

当我将按钮或其他控件设置为ContentControl时,一切都正常。按钮具有所有屏幕的宽度和高度,但CaptureElement没有。谁能告诉我这里有什么问题,或者我必须设置什么来更改CaptureElement的宽度。

我认为问题之一是您在
配置MediaCapture
方法中使用了
设置预览旋转。如果我没记错的话,它不会设置预览的新纵横比,而是会在非旋转预览的纵横比内设置新预览的信箱

如果要进行旋转,请执行以下操作:

// Rotation metadata to apply to the preview stream (MF_MT_VIDEO_ROTATION)
Guid RotationKey = new Guid("C380465D-2271-428C-9B83-ECEA3B4A85C1");
var props = this.MediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview);
props.Properties.Add(RotationKey, rotationDegrees);
await this.MediaCapture.SetEncodingPropertiesAsync(MediaStreamType.VideoPreview, props, null);   
参考:

我从MicrosoftGithub页面获取了适用于Windows10的通用Windows平台示例的代码,尽管许多代码仍然适用于Windows/Phone8.x


完整示例:

对不起,maniek099,但您的应用程序是否有全屏摄像头预览?我也试着这么做,但我的相机预览不是全屏的,它比屏幕高度小

谢谢
Alessio

非常感谢,但在我的问题中,我将CaptureElement的延伸设置为UniformToFill,现在工作正常。愚蠢的疏忽。是的,我也错过了。不过,对于预览轮换,建议使用元数据方法。看一看第9频道摄影机小组关于旋转的谈话:。我在这里发布的代码片段是在10:50分钟左右引入到视频中的。非常感谢你,迈克。我想这对我将来会有帮助。是的,这不是全屏预览。为了进行全屏预览,我使用了带有SuggestedStartLocation=PickerLocationId.PicturesLibrary的FileOpenPicker。您可以选择文件或制作新的标准windows phone照片。
// Rotation metadata to apply to the preview stream (MF_MT_VIDEO_ROTATION)
Guid RotationKey = new Guid("C380465D-2271-428C-9B83-ECEA3B4A85C1");
var props = this.MediaCapture.VideoDeviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview);
props.Properties.Add(RotationKey, rotationDegrees);
await this.MediaCapture.SetEncodingPropertiesAsync(MediaStreamType.VideoPreview, props, null);