我有一个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
。那么,有谁知道为什么此解决方法不起作用,以及是否可以在保存先前捕获的图像后立即重新打开对话框?
请看这里: http://www.hjgode.de/wp/2012/10/17/windows-mobile-cameracapturedialog-alternative/
我无法在此处附加任何代码或二进制文件,因此我写了一篇新的博客文章。
该代码启动相机应用程序,等待其关闭并向您显示新照片列表。
代码还不完美,但是一个起点。