Создание экранных снимков
Создание экранных снимков
Если при работе с мобильным устройством необходимо сделать скриншоты, то для реализации замысла необходимо использовать внешние устройства. Конечно, можно просто сфотографировать экран, но настоящий программист будет использовать функции Windows API. В этом разделе главы будет рассматриваться пример копирования определенной области окна, всего рабочего окна программы или любого другого окна. Для демонстрации примера надо разместить на форме список, три кнопки и один таймер. Сам код приведен в листинге 6.20.
Листинг 6.20
[DllImport("coredll.dll", EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();
[DllImport("coredll.dll", EntryPoint = "GetDC")]
public static extern IntPtr GetDC(IntPtr hWnd);
[DllImport("coredll.dll", EntryPoint = "ReleaseDC")]
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("coredll.dll")]
public static extern int BitBlt(IntPtr hdcDest, int nXDest, int nYDest,
int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, uint dwRop);
const int SRCCOPY = 0x00CC0020;
private void screenshot(string filename, Graphics gx, Rectangle rect) {
Bitmap bmp = new Bitmap(rect.Width, rect.Height);
Graphics g = Graphics.FromImage(bmp);
BitBlt(g.GetHdc(), 0, 0, rect.Width, rect.Height, gx.GetHdc(),
rect.Left, rect.Top, SRCCOPY);
bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Bmp);
bmp.Dispose();
g.Dispose();
}
private void butPartOfWindow_Click(object sender, EventArgs e) {
// Делаем снимок списка
ScreenShot(@"My Documentssave.bmp", this.CreateGraphics(),
listBox1.Bounds);
}
private void butScreen_Click(object sender, EventArgs e) {
// Делаем снимок экрана
Rectangle rect = new Rectangle(0,0,240,240);
Bitmap bmp = new Bitmap(rect.Width, rect.Height);
Graphics g = Graphics.FromImage(bmp);
IntPtr hwnd = GetDesktopWindow();
IntPtr hdc = GetDC(hwnd);
BitBlt(g.GetHdc(), 0, 0, rect.Width, rect.Height, hdc, rect.Left,
rect.Top, SRCCOPY);
bmp.Save(@"My Documentsscreen.bmp",
System.Drawing.Imaging.ImageFormat.Bmp);
// Освобождаем ресурсы
ReleaseDC(hwnd, hdc);
bmp.Dispose();
g.Dispose();
}
private void timer1_Tick(object sender, EventArgs e) {
// Делаем снимок экрана через 5 секунд
Rectangle rect = new Rectangle(0, 0. 240, 240);
Bitmap bmp = new Bitmap(rect.Width, rect.Height);
Graphics g = Graphics.FromImage(bmp);
IntPtr hwnd = GetDesktopWindow();
IntPtr hdc = GetDC(hwnd);
BitBlt(g.GetHdc(), 0, 0, rect.Width, rect.Height, hdc, rect.Left,
rect.Top, SRCCOPY);
bmp.Save(@"My Documents5sec.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
// Освобождаем ресурсы
ReleaseDC(hwnd, hdc);
bmp.Dispose();
g.Dispose();
timer1.Enabled = false;
}
private void but5Sec_Click(object sender, EventArgs e) {
timer1.Enabled = true;
}
Функция ScreenShot позволяет быстро получить участок экрана и сохранить его в графическом файле. В рассмотренном примере внешний вид списка сохраняется в файле 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 поддерживаются все четыре графических формата.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
§ 168. О главном правиле экранных интерфейсов
§ 168. О главном правиле экранных интерфейсов 18 февраля 2011В экранных интерфейсах любые элементы управления не должны быть по площади меньше площади курсора (16?16
Создание снимков отчета и работа с ними
Создание снимков отчета и работа с ними Уже созданный и отредактированный отчет можно экспортировать в формат снимка, в таком случае конечный файл будет являться файлом формата SNP. Снимок отчета представляет собой файл, в котором содержатся копии всех страниц отчета,
Отображение пользовательских экранных подсказок для кнопок на панели инструментов
Отображение пользовательских экранных подсказок для кнопок на панели инструментов Экранные подсказки- это те небольшие сообщения желтого цвета, которые появляются на экране после подведения указателя мыши к определенному элементу на одну-две секунды.Экранные
Глава 19 Отправка фотографий по электронной почте, публикация в Интернете, создание индекса снимков
Глава 19 Отправка фотографий по электронной почте, публикация в Интернете, создание индекса снимков В этой небольшой главе мы познакомимся с тем, как подготовить фотографию к отправке по электронной почте и к размещению в Интернете. Так как эта книга посвящена прежде
13.4. Сохранение снимков в библиотеке фотографий
13.4. Сохранение снимков в библиотеке фотографий Постановка задачи Необходимо обеспечить возможность сохранения снимков в пользовательской библиотеке
Создание экранных снимков
Создание экранных снимков Если при работе с мобильным устройством необходимо сделать скриншоты, то для реализации замысла необходимо использовать внешние устройства. Конечно, можно просто сфотографировать экран, но настоящий программист будет использовать функции
Создание панорамных снимков
Создание панорамных снимков Достигнув определенного уровня мастерства и научившись создавать красивые портреты и пейзажи, несомненно, нужно стремиться дальше. Многие фотолюбители нередко находили чрезвычайно красивый пейзаж, проникаясь непреодолимым желанием
Глава 5 О качестве снимков
Глава 5 О качестве снимков Пожалуй, разговор о качестве снимков можно считать краеугольным камнем темы продажи своих фотографий на микростоковых сайтах. Очень часто, когда люди, в целом далекие от искусства фотографии, слышат о том, что кто-то продает свои фотоснимки и
Коммерческая ценность стоковых снимков
Коммерческая ценность стоковых снимков Крайне туго может прийтись тем фотографам, у которых есть свое уникальное видение объекта съемки. Здесь можно привести в качестве примера студентов-художников (да и просто художников) – все они могут выучить основы живописи и
Глава 9 Программы для обработки снимков
Глава 9 Программы для обработки снимков После того как съемка окончена, пришло время переносить получившиеся снимки на компьютер и подготавливать их к отправке на проверку Разумеется, вы уже знаете, как вынимать карточку из фотоаппарата, вставлять ее, например, в
Организация каталога снимков
Организация каталога снимков После того как съемка окончена, пришло время переносить получившиеся снимки на компьютер и подготавливать их к отправке на проверку. Разумеется, вы уже знаете, как вынимать карточку из фотоаппарата, вставлять ее, например, в кардридер и
Механизм загрузки и приема снимков на продажу
Механизм загрузки и приема снимков на продажу Как вы уже могли понять из предыдущих глав, вы не сможете просто так загружать сотнями совершенно любые снимки, которые сразу же поступят в продажу Все они проходят тщательную индивидуальную проверку и отбор. Для загрузки
Часть III Обработка снимков
Часть III Обработка снимков Глава 14. ФотомонтажГлава 15. Изменение внешностиГлава 16. Смена погоды и сезонаГлава 17. ФотомастерскаяГлава 18. ФотообрамлениеГлава 19.
8.2.6. Создание снимков экрана
8.2.6. Создание снимков экрана Вы хотите «сфотографировать» окно программы? Нажатие клавиши Print Screen делает снимок всего окна экрана, а нажатие комбинации Alt+Print Screen — текущего окна. Снимок экрана (он же скриншот — от англ. screenshot, или просто «скрин») помещается в буфер обмена
4.7.2. Съемка четырех мгновенных снимков
4.7.2. Съемка четырех мгновенных снимков Режим съемки четырех фотографий позволяет за один сеанс автоматически выполнить серию снимков. Для этого нажмите на кнопку: Когда будете готовы к фотосессии, запустите съемку, щелкнув мышью по изображению фотоаппарата После
Особенности черно-белых снимков
Особенности черно-белых снимков Мастера фотографии не зря начинают обучение своих учеников именно с черно-белой фотографии — на таких снимках композиция имеет гораздо большее значение и все огрехи виднее. Попробуйте в графическом редакторе «обесцветить» какой-нибудь