Windows 8 - XAML / C#如何设置摄像机的纵横比

时间:2013-02-20 11:19:55

标签: windows-runtime windows-store-apps winrt-xaml

我的Microsoft HD网络摄像头支持16:9宽高比。我可以从Microsoft LifeCam实用程序中以16:9的宽高比预览和捕获。

在我的应用程序中,预览仅以4:3的宽高比显示。有没有办法把它设置为16:9?我搜索了它,搜索了MSDN API,但找不到办法。

到目前为止我的代码看起来像这样:

XAML     <CaptureElement x:Name="CameraCaptureElement" Stretch="Uniform" ></CaptureElement>

C#代码

private async void InitializeCamera()
{
MediaCapture mediaCaptureMgr = new Windows.Media.Capture.MediaCapture();
await mediaCaptureMgr.InitializeAsync();
CameraCaptureElement.Source = mediaCaptureMgr;
await mediaCaptureMgr.StartPreviewAsync();
}

2 个答案:

答案 0 :(得分:0)

我认为没有使用MediaCapture设置宽高比的API,因此您可能需要考虑使用CameraCaptureUI,如果宽高比选择对您很重要,尽管CameraCaptureUI将保留选择的源宽高比用户的手(但是,如果用户选择裁剪原始捕获,您可以通过编程方式控制裁剪图像的起始宽高比。)

查看以下示例:

http://code.msdn.microsoft.com/windowsapps/CameraCaptureUI-Sample-845a53ac

它展示了如何使用CameraCaptureUI对象来设置裁剪的宽高比,我相信这是你能以编程方式做的最好的。这是相关的代码:

CameraCaptureUI dialog = new CameraCaptureUI();
Size aspectRatio = new Size(16, 9);
dialog.PhotoSettings.CroppedAspectRatio = aspectRatio;

您还可以限制用户可以选择的最大分辨率,但不能限制捕获宽高比。

当通过CaptureFileAsync调用CameraCaptureUI时,用户可以通过Camera Options按钮调整宽高比,如下所示:

Camera Options

有关Windows应用商店应用开发的详细信息,请注册Generation App

答案 1 :(得分:0)

您可以在Clip上设置CameraCaptureElement,将预览剪辑为所需的宽高比。然后在拍摄照片后 - 你需要裁剪它。