3

我将相机添加到我的应用程序中,该应用程序全部处于人像模式,因此希望保持这种方式。

这是我在 .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);
    }

问题是我将手机放在纵向并将手机指向一个人。屏幕在屏幕右侧显示人的头部,在屏幕左侧显示人的脚。当他们站在我面前时,头应该在屏幕顶部,脚应该在底部,因为这些人不是超人。

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

任何人都可以解释发生了什么问题以及我需要实施哪些示例代码来解决这个问题。

谢谢,-代码

4

2 回答 2

3

您需要实现 VideoBrush.RelativeTransform,如下文所述:-

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

还包括以下内容:-

Windows Phone 7 Mango PhotoCamera 的取景器方向

于 2012-04-25T14:26:32.457 回答
1

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

viewfinderTransform.Rotation = 90;
于 2013-06-17T09:12:09.147 回答