Работа с фотокамерой

We use cookies. Read the Privacy and Cookie Policy

Работа с фотокамерой

Мобильные устройства все чаще снабжаются фотокамерами. Причем многие пользователи отсутствие камеры на смартфоне считают очень большим недостатком. Система Windows Mobile 5.0 предлагает поддержку работы с камерой, чтобы разработчики могли использовать ее возможности в своих приложениях.

Диалоговое окно захвата изображения позволяет интегрировать фотографии и видеоматериал в приложения. При этом разработчик получает возможность управлять поведением камеры. Доступ к возможностям камеры осуществляется при помощи класса Microsoft.WindowsMobile.Forms.CameraCaptureDialog. Класс CameraCaptureDialog очень похож на класс SelectPictureDialog.

Свойство Mode позволяет управлять режимом съемки. Камера может работать, как обычный фотоаппарат, что задается значением CameraCaptureMode.Still, или записывать видеоролик. Диалоговое окно вызывается методом ShowDialog, который возвращает значение, показывающее, как было закрыто окно. Если пользователь выбрал кнопку OK, то возвращается значение DialogResult.OK. Имя выбранной картинки записывается в свойство FileName. В листинге 10.17 приведен пример работы с фотокамерой.

Листинг 10.17

private void butPhotoMake_Click(object sender, EventArgs e) {

 CameraCaptureDialog cameraCaptureDialog = new CameraCaptureDialog();

 cameraCaptureDialog.Owner = this;

 cameraCaptureDialog.Title = "Фотограф";

 cameraCaptureDialog.Mode = CameraCaptureMode.Still;

 if (cameraCaptureDialog.ShowDialog() == DialogResult.OK &&

  cameraCaptureDialog.FileName.Length > 0) {

  PictureBox.Image = new Bitmap(cameraCaptureDialog.FileName);

  MessageBox.Show("Снято!");

 }

}

Для записи видеоролика используется аналогичный способ, но надо поменять режим съемки. Так, для записи видеоматериала вместе со звуком используется режим VideoWithAudio. Пример записи видеоролика приведен в листинге 10.18.

Листинг 10.18

private void butCaptureClick(object sender, EventArgs e) {

 CameraCaptureDialog cameraCapture = new CameraCaptureDialog();

 cameraCapture.Owner = null;

 cameraCapture.InitialDirectory = @"My Documents":

 cameraCapture.DefaultFileName = @"test.3gp";

 cameraCapture.Title = "Камера - Демонстрация";

 cameraCapture.VideoTypes = CameraCaptureVideoTypes.Messaging;

 cameraCapture.Resolution = new Size(176, 144);

 // Лимит в 10 секунд для видео

 cameraCapture.VideoTimeLimit = new TimeSpan(0, 0, 10);

 cameraCapture.Mode = CameraCaptureMode.VideoWithAudio;

 if (DialogResult.OK == cameraCapture.ShowDialog()) {

  MessageBox.Show("Картинка или видео успешно записаны в: {0}",

  cameraCapture.FileName);

 }

}

Легко заметить, что эти два примера практически идентичны. Существует еще режим записи видео без звукового сопровождения. В этом случае для свойства Mode задается значение CameraCaptureMode.VideoOnly. Если перед вызовом метода ShowDialog использовать свойство DefaultFileName, то указанное имя будет использоваться как имя файла для записи новых фотографий или видеоматериала. Свойство InitialDirectory позволяет указать папку, в которой будут сохраняться отснятые материалы. Свойство Resolution позволяет задать разрешение снимаемого материала, что иллюстрирует следующая строка кода:

cameraCaptureDialog.Resolution = new Size(320, 240);

Свойство StillQuality позволяет установить качество сжатия для фотографий при помощи перечисления CameraCaptureStillQuality. Используемые значения перечислены в следующем списке:

? High — указывает на наилучшее качество картинки с минимальным сжатием;

? Normal — среднее качество картинки;

? Low — высокая степень сжатия, плохое качество.

Свойство VideoTimeLimit позволяет установить максимальную продолжительность записи видеоматериала. По умолчанию используется нулевое значение, что означает отсутствие временного ограничения. В этом случае запись съемки будет вестись до тех пор, пока позволяют ресурсы системы. Свойство VideoTypes позволяет выбрать тип видеоматериала. На устройствах под управлением Windows Mobile 5.0 используется видеоматериал двух типов — Multimedia Messaging Service (MMS) и Windows Media Video (WMV).