我制作通用Windows Phone 8.1应用。我的问题是当我使用后置摄像头时,我的用户界面中的MediaCapture摄像头预览的捕捉元素不会填满整个屏幕宽度,但是当使用前置摄像头时相机它确实填满了整个宽度。我不确定后置摄像头和前置摄像头之间的差异导致了这一点,但这里是重要的代码。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="11*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<CaptureElement x:Name="CamCaptureElement"
Grid.Row="0"
Grid.RowSpan="2"
Grid.ColumnSpan="2"
Grid.Column="0"
Stretch="UniformToFill"/>
</Grid>
网格行和列用于计划在相机预览之上的UI元素。
这是我对MediaCature的初始化。
var webcamList = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
frontWebcam = (from webcam in webcamList
where webcam.EnclosureLocation != null
&& webcam.Name.ToLowerInvariant().Contains("front")
select webcam).FirstOrDefault();
backWebcam = (from webcam in webcamList
where webcam.EnclosureLocation != null
&& webcam.Name.ToLowerInvariant().Contains("back")
select webcam).FirstOrDefault();
mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync(new MediaCaptureInitializationSettings {
VideoDeviceId = backWebcam.Id,
StreamingCaptureMode = StreamingCaptureMode.Video,
PhotoCaptureSource = PhotoCaptureSource.VideoPreview,
AudioProcessing = AudioProcessing.Default
});
imageEncodingPropsBack = ImageEncodingProperties.CreateJpeg();
imageEncodingPropsBack.Width = 800;
imageEncodingPropsBack.Height = 600;
mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
CamCaptureElement.Source = mediaCapture;
mediaCapture.VideoDeviceController.PrimaryUse = CaptureUse.Photo;
答案 0 :(得分:0)
做一件事。
在网格内部添加一个图像框,其中包含最终图像!将拉伸属性设置为 UNIFORM 。不要给任何高度和高度宽度到图像框。操作模式(横向和底部)时,图像会调整大小并保持其纵横比!这就是为什么在一种模式下你只能看到它占据屏幕的一半