使用`CameraCaptureDialog`捕获并保存多个图像

时间:2012-10-16 14:38:55

标签: c# windows-mobile windows-mobile-5.0 compact-framework2.0

我有一个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);
            }
        }
    }
}

问题在于,CameraCaptureDialog仍然只会打开一次,而后续调用ShowDialog方法只会返回DialogResult.Cancel。那么,有没有人知道为什么这个解决方法不起作用,并且如果可以在保存上一个捕获的图像后立即重新打开对话框?

1 个答案:

答案 0 :(得分:1)

请看这里:http://www.hjgode.de/wp/2012/10/17/windows-mobile-cameracapturedialog-alternative/

我无法在此处附加任何代码或二进制文件,因此我发布了一篇新的博文。

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

代码尚不完美,但却是一个起点。