Windows Mobile:使用C#的手机摄像头

时间:2009-07-04 17:28:23

标签: c# windows-mobile compact-framework camera

我想在WinForm中显示手机摄像头拍摄控件的图像。我的想法是我的应用程序像摄像机程序一样工作。我希望像用户打算拍照一样显示图像。

我该怎么做?我能这样做吗?

如果您需要更多详情,请问我。

谢谢!

4 个答案:

答案 0 :(得分:8)

不太确定您需要什么,但您可以尝试使用Microsoft.WindowsMo​​bile.Forms.CameraCaptureDialog:

    string originalFileName;
    using (CameraCaptureDialog dlg = new CameraCaptureDialog()) {
        dlg.Mode = CameraCaptureMode.Still;
        dlg.StillQuality = CameraCaptureStillQuality.Low;
        //dlg.Resolution = new Size(800, 600);
        dlg.Title = "Take the picture";
        DialogResult res;
        try {
            res = dlg.ShowDialog();
        }
        catch (Exception ex) {
            Trace.WriteLine(ex);
            return null;
        }

        if (res != DialogResult.OK)
            return null;
        this.Refresh();
        originalFileName = pictureFileName = dlg.FileName;
    }

稍后编辑: 你们中的一些人也可能会发现这个链接很有用: http://community.intermec.com/t5/General-Development-Developer/CN50-MS-Camera-Capture-Dialog-generates-error/m-p/12881#M4083

答案 1 :(得分:3)

你想要的是预览,而不是捕捉,这要困难得多。最好的(也许是唯一的)解决方案是在过滤器图形中插入一个DShow过滤器,将预览窗口传送到您想要的位置。

COM是Compact Framework中的一只熊,无论您使用什么平台,DShow都很难。网上有一些资源,例如DShow.NET library at sourceforgeAlex Mogurenko's blog,但没有特定的资源来创建捕获。

WinMo SDK中有一个本机捕获示例,可以帮助您实现这一目标。

答案 2 :(得分:1)

我认为你应该使用sdk或类似的东西直接对硬件进行编程。

由于直接针对硬件的编程通常是用c / c ++编写的,因此sdk可能是原生的。所以要么你可能必须使用pinvoke和不安全的关键字。

但首先你应该找到访问相机的方法,因为这取决于硬件,你可以从手机制造商的网站开始。

答案 3 :(得分:1)

检查来自OpenNetCF.org的SmartDeviceFramework有一些PocketPC工具,包括从相机中捕获帧。