Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework

Здесь есть возможность читать онлайн «Александр Климов - Программирование КПК и смартфонов на .NET Compact Framework» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2007, ISBN: 2007, Издательство: Питер, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование КПК и смартфонов на .NET Compact Framework: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование КПК и смартфонов на .NET Compact Framework»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Мобильные устройства все активнее вторгаются в нашу жизнь. Карманные компьютеры и смартфоны давно утратили статус дорогих игрушек и перекочевали в разряд необходимых устройств. Значит, для них необходимо создавать программное обеспечение. Так почему вы должны оставаться в стороне?
Прочитав эту книгу, вы получите знания, которые позволят вам уверенно создавать программы для карманных компьютеров и смартфонов. А огромное количество разнообразных примеров поможет быстро совершенствоваться и развиваться, обогащая свой опыт работы.
Книга предназначена для начинающих программистов.

Программирование КПК и смартфонов на .NET Compact Framework — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование КПК и смартфонов на .NET Compact Framework», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Листинг 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 Documents\save.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 Documents\screen.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 Documents\5sec.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 поддерживаются все четыре графических формата.

Метод 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) {

Bitmap bmp = new Bitmap(@"\Windows\msn.gif");

width = bmp.Size.Width;

height = bmp.Size.Height;

Graphics g = Graphics.FromImage(bmp);

g.Dispose();

return bmp;

}

protected override void OnPaint(PaintEventArgs e) {

Bitmap bmp = CreateBitmap(100, 100);

// Выводим картинку-оригинал

e.Graphics.DrawImage(bmp, 0, 0);

MakeMoreBlue(bmp);

// Рисуем модифицированную картинку ниже исходного изображения

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование КПК и смартфонов на .NET Compact Framework»

Представляем Вашему вниманию похожие книги на «Программирование КПК и смартфонов на .NET Compact Framework» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Гайдар Магдануров - ASP.NET MVC Framework
Гайдар Магдануров
libcat.ru: книга без обложки
Александр Климов
libcat.ru: книга без обложки
Александр Климов
libcat.ru: книга без обложки
Александр Климов
Александр Климов - Реестр Windows 7
Александр Климов
libcat.ru: книга без обложки
Александр Климов
libcat.ru: книга без обложки
Александр Климов
libcat.ru: книга без обложки
Александр Климов
Александр Климов - Гадания
Александр Климов
Отзывы о книге «Программирование КПК и смартфонов на .NET Compact Framework»

Обсуждение, отзывы о книге «Программирование КПК и смартфонов на .NET Compact Framework» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x