Чтение онлайн

на главную - закладки

Жанры

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:
Листинг 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 = "Фотограф";

 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
позволяет задать разрешение снимаемого материала, что иллюстрирует следующая строка кода:

Поделиться:
Популярные книги

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Жизнь под чужим солнцем

Михалкова Елена Ивановна
Детективы:
прочие детективы
9.10
рейтинг книги
Жизнь под чужим солнцем

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец