Читаем Программирование КПК и смартфонов на .NET Compact Framework полностью

 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("Картинка или видео успешно записаны в:\n{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).

Повторение пройденного

Примеры доступа к объектам Pocket Outlook рассматривались применительно к карманным компьютерам. Но теперь надо воссоздать их, опираясь уже на смартфоны. Сам код примеров останется практически неизменным. Но при этом изменится логика управления программой. Как уже говорилось ранее, управление в смартфонах сводится к обработке событий для пунктов меню.

Встречи

Сначала рассмотрим пример с использованием объекта Pocket Outlook. На этот раз надо получить доступ к списку встреч (Appointment). Перед началом изучения примера вам нужно убедиться, что список событий имеет хотя бы одну запись. Если там ничего нет, то следует создать несколько записей самостоятельно.

После создания нового проекта на форме надо разместить элемент ListView. Свойство View должно получить значение Details. В коллекции Columns надо задать заголовки Дата, Время и Тема (рис. 10.12). Прежде всего потребуется задать переменную для экземпляра сессии Outlook. Сразу же после вызова метода InitializeComponent в конструкторе формы объявляем экземпляр для сессии PocketOutlook, как показано в листинге 10.19.

Рис. 10.12. Внешний вид приложения

Листинг 10.19

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных