让相机在人像模式下正常工作

本文关键字:常工作 工作 相机 模式 | 更新日期: 2023-09-27 18:32:17

我将相机添加到我的应用程序中,该应用程序都处于肖像模式,因此希望保持这种状态。

这是我在.XAML

SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="800" d:DesignWidth="480"
    <Canvas x:Name="viewfinderCanvas" Width="480" Height="800" >
        <!--Camera viewfinder -->
        <Canvas.Background>
            <VideoBrush x:Name="viewfinderBrush">
            </VideoBrush>
        </Canvas.Background>
    </Canvas>    

这是我的设置代码。XAML.CS

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
         if (PhotoCamera.IsCameraTypeSupported(CameraType.FrontFacing))
         {
            cam = new Microsoft.Devices.PhotoCamera(CameraType.FrontFacing);
         }
         else
         {
            cam = new Microsoft.Devices.PhotoCamera(CameraType.Primary);
         }
         cam.Initialized += new EventHandler<Microsoft.Devices.CameraOperationCompletedEventArgs>(cam_Initialized);
         cam.CaptureCompleted += new EventHandler<CameraOperationCompletedEventArgs>(cam_CaptureCompleted);
         cam.CaptureImageAvailable += new EventHandler<Microsoft.Devices.ContentReadyEventArgs>(cam_CaptureImageAvailable);
         cam.CaptureThumbnailAvailable += new EventHandler<ContentReadyEventArgs>(cam_CaptureThumbnailAvailable);
         viewfinderBrush.SetSource(cam);
    }

问题是我以纵向方式握住手机并将手机指向一个人。屏幕显示人物头部位于屏幕右侧,人员脚位于屏幕左侧。当他们站在我面前时,头部应该在屏幕的顶部,脚在bottm上,因为这些人是超人。

因此,来自相机的图像似乎在出现在屏幕上之前旋转了-90。

任何人都可以解释出了什么问题以及我需要实现什么示例代码来解决此问题。

谢谢-法典

让相机在人像模式下正常工作

你需要实现一个 VideoBrush.RelativeTransform,详见以下文章:-

http://msdn.microsoft.com/en-us/magazine/hh708750.aspx

还涵盖以下内容:-

取景器方向与Windows Phone 7芒果照片相机

只需将此行添加到相机页面的 C# 代码中即可。它将在纵向模式下正确转换和处理相机视频流。

viewfinderTransform.Rotation = 90;