C# Windows Mobile:使用手机&x27;带C的s照相机#

C# Windows Mobile:使用手机&x27;带C的s照相机#,c#,windows-mobile,compact-framework,camera,C#,Windows Mobile,Compact Framework,Camera,我想展示手机摄像头在WinForm控件上拍摄的图像。我的想法是,我的应用程序就像照相机的程序一样工作。我想显示图像,就像用户要拍照一样 我该怎么做?我可以这样做吗 如果你需要更多的细节,请问我 谢谢大家! 我认为您应该直接使用sdk或类似工具针对硬件编程 由于直接针对硬件编程通常是在c/c++中,因此sdk可能是本机的。因此,要么你可能不得不使用pinvoke和不安全关键字 但首先,您应该找到访问摄像头的方法,因为这取决于硬件,所以您可以从手机制造商的网站开始。检查SmartDeviceFram

我想展示手机摄像头在WinForm控件上拍摄的图像。我的想法是,我的应用程序就像照相机的程序一样工作。我想显示图像,就像用户要拍照一样

我该怎么做?我可以这样做吗

如果你需要更多的细节,请问我


谢谢大家!

我认为您应该直接使用sdk或类似工具针对硬件编程

由于直接针对硬件编程通常是在c/c++中,因此sdk可能是本机的。因此,要么你可能不得不使用pinvoke和不安全关键字


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

检查SmartDeviceFramework,从中获得一些用于PocketPC的工具,包括从摄像头捕获帧。

您需要的是预览,而不是捕获,这要困难得多。最好的(可能也是唯一的)解决方案是在filtergraph中插入一个DShow过滤器,将预览窗口输送到您想要的位置

COM是紧凑型框架中的一个熊,而DShow无论在什么平台上都很难实现。在线上有一些资源,如和,但没有特定于创建捕获的资源


WinMo SDK中有一个本机捕获示例,可以作为帮助您实现此目的的有用指南。

不太确定您需要什么,但您可以尝试使用Microsoft.WindowsMobile.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;
    }
以后编辑: 有些人可能会发现此链接也很有用:

谢谢您的回答。我没有和DShow合作过。它与所有类型的Windows Mobile设备兼容吗?我在哪里可以找到更多关于DShow的信息?可能是这样的:我不明白:“…将DShow过滤器插入filtergraph,将预览窗口输送到您想要的位置。”查看中的相机示例