导出 (0) 打印
全部展开

如何在 Windows Phone 应用程序中调整所拍摄照片的分辨率

2012/2/9

使用 Windows Phone OS 7.1,您可以采用编程方式访问设备相机。本主题介绍如何采用编程方式设置在 Windows Phone 应用程序中拍摄的照片的分辨率。本主题是如何为 Windows Phone 创建基本相机应用程序的继续,并且假定您已在该主题中创建了基本相机项目。

提示提示:

本主题与基本相机示例相对应。若要下载完整的项目,请参阅 Windows Phone 的代码示例

在本节中,向 UI 中添加一个按钮并在代码隐藏文件中添加所需的逻辑,以将所拍摄照片的分辨率设置为在点按“分辨率”按钮时的下一个大小。

注意注意:

本主题基于 C# 开发;但也提供 Visual Basic 代码。

设置所拍摄照片分辨率的步骤

  1. 打开在如何为 Windows Phone 创建基本相机应用程序中创建的基本相机项目。

  2. 在主页 XAML 文件 MainPage.xaml 中,在 StackPanel 元素中添加以下代码,放在名为 ShutterButtonButton 元素下面。

    <Button Content="Res" Name="ResButton" Click="changeRes_Clicked" FontSize="26" FontWeight="ExtraBold" Height="75"/>
    
    
    

    该代码就是用于设置照片分辨率的按钮。

  3. 打开主页的代码隐藏文件 MainPage.xaml.cs,在 MainPage 类构造函数上面添加以下变量声明。

    // Holds the current resolution index.
    int currentResIndex = 0;
    
    
  4. MainPage.xaml.cs 中,向 OnNavigatedTo 方法中添加以下代码,放在 Disable UI 注释下面。

    ResButton.IsEnabled = false;
    

    该代码禁用分辨率按钮。当设备上的相机不可用时使用。

  5. MainPage.xaml.cs 中,向 MainPage 类中添加以下代码。

        private void changeRes_Clicked(object sender, System.Windows.RoutedEventArgs e)
        {
            // Variables
            IEnumerable<Size> resList = cam.AvailableResolutions;
            int resCount = resList.Count<Size>();
            Size res;
    
            // Poll for available camera resolutions.
            for (int i = 0; i < resCount; i++)
            {
                res = resList.ElementAt<Size>(i);
            }
    
            // Set the camera resolution.
            res = resList.ElementAt<Size>((currentResIndex + 1) % resCount);
            cam.Resolution = res;
            currentResIndex = (currentResIndex + 1) % resCount;
    
            // Update the UI.
            txtDebug.Text = String.Format("Setting capture resolution: {0}x{1}", res.Width, res.Height);
            ResButton.Content = "R" + res.Width;
        }
    
    
        Private Sub changeRes_Clicked(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
    
            ' Variables
            Dim resList As IEnumerable(Of Size) = cam.AvailableResolutions
            Dim resCount As Integer = resList.Count()
            Dim res As Size
    
            ' Poll for available camera resolutions.
            For i As Integer = 0 To resCount - 1
                res = resList.ElementAt(i)
            Next i
    
            ' Set the camera resolution.
            res = resList.ElementAt((currentResIndex + 1) Mod resCount)
            cam.Resolution = res
            currentResIndex = (currentResIndex + 1) Mod resCount
    
            ' Update the UI.
            txtDebug.Text = String.Format("Setting capture resolution: {0}x{1}", res.Width, res.Height)
            ResButton.Content = "R" & res.Width
    
        End Sub
    
    

    该代码将照片分辨率更改为下一个可用的分辨率。可用的拍摄分辨率由 PhotoCamera 类的 AvailableResolutions 属性提供。这些分辨率就是 Size 结构的集合。每个 Size 指定 HeightWidth 属性。

  6. 在设备上,通过选择“调试 | 启动调试”菜单命令来运行应用程序。

显示:
© 2014 Microsoft