Question

I have a Windows Mobile (Compact framework 2) application that defines a user control MPhotoControl. MPhotoControl shows a default image and when the user clicks on this image a CameraCaptureDialog is opened to allow a photo to be captured. Once captured, the photo is then displayed in the user control. This works fine for capturing a single photo and then going back to the application.

The problem is that when there are lots of these controls on a particular form then the user interface becomes very unfriendly because the user has to show the camera dialog, take a photo, save and close the dialog for every photo control on the form. What the users are asking for is a mechanism to open the CameraCaptureDialog, take several photos without the dialog closing until all the photo controls have images.

I am trying to implement this, but I don't see a way to get the CameraCaptureDialog to capture and save several photos at once. As far as I can tell it is not possible, because when the dialog shows on my HTC Touch Diamond, I only have the options to "Accept the photo" (arrow icon), "Capture again" (camera icon) or "cancel and close dialog" (dustbin icon). And when I click the arrow to accept it always closes the dialog box.

So does anyone know of a way of capturing and saving more than one image at a time using CameraCaptureDialog?

I then thought of trying to open the CameraCaptureDialog multiple times as a work around. So as soon as the first image is saved the dialog is immediately opened again to capture the second image. Here is my code showing my attempt at a workaround:

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);
            }
        }
    }
}

The problem with this is that the CameraCaptureDialog still only opens once and the subsequent call to the ShowDialog method simply returns DialogResult.Cancel. So, does anyone know why this workaround does not work and if it is possible to get the dialog to immediately re-open once the previous captured image has been saved?

Was it helpful?

Solution

Please look here: http://www.hjgode.de/wp/2012/10/17/windows-mobile-cameracapturedialog-alternative/

I am unable to attach any code or binaries here, so I did a new blog post.

The code start the camera app, waits for its close-down and presents you with a list of new photos.

Code is not yet perfect but a starting point.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top