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

Но лучше работу с диалоговым окном выбора картинки рассмотреть на примере. На форме надо разместить метку lblSelectedPicture и графическое поле picSelectImage. Не забудьте перед началом создания приложения установить ссылку на пространство имен Microsoft.WindowsMobile.Forms. Соответствующий код приведен в листинге 10.16.

Листинг 10.16

private void butSelectPicture_Click(object sender, EventArgs e) {

 SelectPictureDialog selectPictureDialog = new SelectPictureDialog();

 // Задаем фильтр

 selectPictureDialog.Filter = "Рисунки(*.BMP;*.JPG)|*.BMP;*.JPG";

 // Задаем папку для обзора

 selectPictureDialog.InitialDirectory = Windows";

 // Заголовок для диалогового окна

 selectPictureDialog.Title = "Выберите рисунок";

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

  selectPictureDialog.FileName.Length > 0) {

  // Получим расширение выбранного файла

  string fileExtension = Path.GetExtension(selectPictureDialog.FileName);

  // Выводим путь выбранного файла

  lblSelectedPicture.Text = "Выбранный файл: " +

   selectPictureDialog.FileName;

  // Если выбран файл JPG, то выводим на экран

  if (fileExtension.ToLower() == ".jpg")

   picSelectedImage.Image = new Bitmap(selectPictureDialog.FileName);

 }

}

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

Рис. 10.11. Выбор изображения

Потом в заголовке диалогового окна выводится текст, поясняющий пользователю дальнейшие действия. Это был минимально необходимый при использовании класса SelectPictureDialog код.

Если пользователь выбрал картинку и нажал на кнопку OK, то надо распознать выбранный файл. С помощью метода Path.GetExtension можно получить расширение файла. В текстовой метке lblSelectedPicture отображается полный путь к выбранному файлу, а в графическом поле picSelectedImage размещается сама картинка. Но для этого она должна иметь расширение .JPG (рис. 10.11).

Следует обратить внимание на то, что диалоговое окно выбора рисунка позволяет выбирать картинки из любой папки устройства.

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

Мобильные устройства все чаще снабжаются фотокамерами. Причем многие пользователи отсутствие камеры на смартфоне считают очень большим недостатком. Система 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 = "Фотограф";

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

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

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

Стивен Прата

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