在Windows Phone 7中显示相机输出

yto*_*ano 3 camera augmented-reality windows-phone-7

我正在为Windows Phone 7编写一个增强现实应用程序作为学校项目.我想获取相机输出,然后在其上添加一层数据.有没有办法让相机输出显示在面板中?

小智 7

仅供参考:在Windows Phone SDK 7.1(又名"Mango")中,您现在可以编写使用设备相机的应用程序.请参阅App Hub以获取最新7.1开发工具的链接.该文档描述了如何在以下链接中执行此操作:

如何:为Windows Phone创建基本相机应用程序

但基本上,添加一个videobrush来显示相机输入(又名"取景器").例如,这里使用矩形控件显示相机取景器:

    <!--Camera viewfinder >-->
    <Rectangle Width="640" Height="480" 
               HorizontalAlignment="Left" 
               x:Name="viewfinderContainer">

        <Rectangle.Fill>
            <VideoBrush x:Name="viewfinderBrush" />
        </Rectangle.Fill>
    </Rectangle>
Run Code Online (Sandbox Code Playgroud)

要在页面的代码隐藏中使用相机,请添加对Microsoft.XNA.Framework的引用,并在页面顶部放置以下Using语句:

// Directives
using Microsoft.Devices;
using System.IO;
using System.IO.IsolatedStorage;
using System.Windows.Media.Imaging;
using Microsoft.Xna.Framework.Media;
Run Code Online (Sandbox Code Playgroud)

注意:您可能不需要所有这些,我只是从文档中复制它.在Visual Studio(至少是Pro)中,您可以在完成后通过右键单击代码文件并单击" 组织使用"来清理它们.删除未使用的使用情况.

然后,基本上你将相机图像应用于OnNavigatedTo处理程序中的矩形...

    //Code for initialization and setting the source for the viewfinder
    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {

        // Initialize camera
        cam = new Microsoft.Devices.PhotoCamera();

        //Set the VideoBrush source to the camera.
        viewfinderBrush.SetSource(cam);
    }
Run Code Online (Sandbox Code Playgroud)

...并在OnNavigatingFrom中处理相机对象.

    protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
    {
        // Dispose camera to minimize power consumption and to expedite shutdown.
        cam.Dispose();

        // Good place to unhook camera event handlers too.
    }
Run Code Online (Sandbox Code Playgroud)

7.1文档还描述了以下主题中的增强现实应用程序.请注意,您需要向下滚动到标题为" 创建基于Silverlight的增强现实应用程序"的部分,以查找使用Mango构建它的说明.

如何:使用Windows Phone的Combined Motion API

希望这也有助于其他人在Windows Phone OS 7.1中寻找有关PhotoCamera的信息.

干杯