C# 使用“CameraCaptureDialog”捕获并保存多个图像`

C# 使用“CameraCaptureDialog”捕获并保存多个图像`,c#,windows-mobile,windows-mobile-5.0,compact-framework2.0,C#,Windows Mobile,Windows Mobile 5.0,Compact Framework2.0,我有一个Windows Mobile(Compact framework 2)应用程序,它定义了一个用户控件MPhotoControl。MPhotoControl显示默认图像,当用户单击此图像时,将打开CameraCaptureDialog以允许拍摄照片。捕获后,照片将显示在用户控件中。这适用于捕获一张照片,然后返回应用程序 问题是,当一个特定表单上有很多这样的控件时,用户界面就会变得非常不友好,因为用户必须为表单上的每个照片控件显示照相机对话框、拍照、保存和关闭对话框。用户要求的是一种机制,可

我有一个Windows Mobile(Compact framework 2)应用程序,它定义了一个用户控件MPhotoControl。MPhotoControl显示默认图像,当用户单击此图像时,将打开
CameraCaptureDialog
以允许拍摄照片。捕获后,照片将显示在用户控件中。这适用于捕获一张照片,然后返回应用程序

问题是,当一个特定表单上有很多这样的控件时,用户界面就会变得非常不友好,因为用户必须为表单上的每个照片控件显示照相机对话框、拍照、保存和关闭对话框。用户要求的是一种机制,可以打开
CameraCaptureDialog
,在对话框关闭的情况下拍摄多张照片,直到所有照片控件都有图像为止

我正在尝试实现这一点,但我看不到一种方法可以让
CameraCaptureDialog
一次捕获并保存多张照片。据我所知,这是不可能的,因为当我的HTC Touch Diamond上显示对话框时,我只能选择“接受照片”(箭头图标)、“再次捕获”(相机图标)或“取消并关闭对话框”(垃圾箱图标)。当我点击箭头接受它时,它总是关闭对话框

那么,是否有人知道使用
CameraCaptureDialog
一次捕获和保存多个图像的方法

然后,我想尝试多次打开
CameraCaptureDialog
作为一种解决方法。因此,一旦保存了第一个图像,就会立即再次打开对话框以捕获第二个图像。下面是我的代码,显示了我在解决方法方面的尝试:

public partial class MPhotoControl : UserControl
{
    public static IEnumerable<MPhotoControl> PhotoControls;

    ...

    private void CaptureMultiplePhotos()
    {
        foreach (MPhotoControl photo in PhotoControls)
        {               
            using (CameraCaptureDialog cameraDialog = new CameraCaptureDialog())
            {
                if (cameraDialog.ShowDialog() != DialogResult.OK)
                {
                    break;
                }
                photo.CapturePhoto(cameraDialog.FileName);
            }
        }
    }
}
公共部分类MPhotoControl:UserControl
{
公共静电可数光控制器;
...
私人无效捕获多张照片()
{
foreach(光控中的MPhotoControl照片)
{               
使用(CameraCaptureDialog cameraDialog=new CameraCaptureDialog())
{
if(cameraDialog.ShowDialog()!=DialogResult.OK)
{
打破
}
photo.CapturePhoto(cameraDialog.FileName);
}
}
}
}
问题是,
CameraCaptureDialog
仍然只打开一次,对
ShowDialog
方法的后续调用只返回
DialogResult.Cancel
。那么,是否有人知道此解决方案不起作用的原因,以及是否有可能在保存上一张捕获的图像后立即重新打开对话框?

请查看此处:

我无法在这里附加任何代码或二进制文件,所以我写了一篇新的博文

该代码启动相机应用程序,等待其关闭,并向您显示新照片列表


代码还不是完美的,但它是一个起点。

自从我使用CameraCaptureDialog甚至WM开发以来,已经有很长时间了。如果你交换using和foreach会怎么样?嗨,乔希。我最初有一个CameraCaptureDialog,定义为静态成员,而不是在循环中创建一个新成员,但这也返回了DialogResult。在第二次调用ShowDialog方法时取消。这会触发一些旧内存。。。是否有初始化方法?假设CameraCaptureDialog只允许一个实例,这就是为什么不能有多个实例。大多数Windows Mobile应用程序也是如此。-要解决问题,您不能使用CameraCaptureDialog类。您可以为相机应用程序创建一个新进程,并等待相机应用程序关闭(最小化)。在开始照相机进程之前,先对图像目录进行快照,以便以后知道添加了哪些图像。要将照相机作为新进程运行,请使用“pimg.exe-camerakey”谢谢,Josef。我昨天刚刚和我的一位同事谈论了一个类似于这些思路的解决方案。这肯定是一个很好的起点。。。我来看看。谢谢。很高兴能帮上忙。亲切的问候~约瑟夫