позволяет быстро получить участок экрана и сохранить его в графическом файле. В рассмотренном примере внешний вид списка сохраняется в файле
listbox.bmp
. Для этого достаточно было указать имя файла, объект
Graphics
и размеры списка
ListBox
. Для получения снимка экрана пример пришлось несколько усложнить, добавив вызовы функций
GetDesktopWindow
и
GetDC
.
Если нужно получить снимок другой программы, то придется воспользоваться таймером. После запуска таймера в распоряжении пользователя будет 5 секунд, чтобы запустить другое приложение. Основная программа будет работать в фоновом режиме и сделает снимок экрана.
Чтобы проверить работу приложения, нужно запустить программу, нажать каждую кнопку, а затем с помощью программы File Explorer найти сохраненные файлы.
ВНИМАНИЕ
Нужно проявлять определенную осторожность при работе с методом Bitmap.Save. Дело в том, что в Windows Mobile 2003 и более ранних версиях операционных систем библиотека .NET Compact Framework не поддерживает сохранение графических файлов в форматах GIF, JPEG или PNG. Сохранять файлы можно только в формате BMP. Причем во время написания кода редактор не заметит ошибки и позволит запустить программу с неправильным вызовом метода. Однако при вызове метода возникнет исключение NotSupportedException. К счастью, в Windows Mobile 5.0 поддерживаются все четыре графических формата.
Метод Lockbits
В .NET Compact Framework 2.0 появилась ограниченная поддержка метода
LockBits
, при помощи которого можно манипулировать массивом пикселов изображения. Перечисление
ImageLockMode
в данном методе позволяет использовать значения
ReadWrite
,
ReadOnly
и
WriteOnly
. А перечисление
PixelFormat
поддерживает значения, перечисленные в следующем списке:
□
Format16bppRgb555
;
□
Format16bppRgb565
;
□
Format24bppRgb
;
□
Format32bppRgb
.
На сайте MSDN можно найти статью «How to: Use LockBits» с примером, в котором создается картинка и меняется интенсивность синих пикселов с помощью метода
LockBits
. В листинге 6.21 приведен пример, который для большей наглядности пришлось немного изменить.
Листинг 6.21
private Bitmap CreateBitmap(int width, int height) {