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

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

Жанры

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

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

Шрифт:

 // Имитируем нажатие кнопку выключения устройства

 keybd_event(VK_OEM_8, 0, 0, 0);

}

Дополнительные материалы

Если вы хотите узнать о клавиатуре еще больше, то стоит обратить внимание на блог Алекса Яхнина, который можно найти по адресу blog.opennetcf.org/ayakhnin. Там можно найти статью «Keyboard hook in the CF v2». В данной статье рассказывается о перехвате всех сообщений, которые посылаются при нажатии любых кнопок устройства. Также может быть полезна статья «Custom SIP Control for CF».

Автор статьи предлагает собственную реализацию элемента
InputControl
, который содержит свою виртуальную клавиатуру. Этот пример может пригодиться при создании приложения, в котором не используется стандартная панель ввода SIP, но при этом пользователь должен иметь возможность ввода информации.

Глава 6

Графика

Классы для программирования графики

Программирование графики в .NET Compact Framework опирается на те же базовые приемы, что и работа с графикой для полной версии .NET Framework. Все основные классы для работы с графикой сосредоточены в пространстве имен

System.Drawing
. С помощью этих классов можно рисовать всевозможные фигуры, отображать линии, работать с изображениями и даже манипулировать текстом. В качестве своеобразного холста для графических опытов можно использовать поверхность формы или элементов управления. Самым главным классом является класс
Graphics
, который предоставляет поверхность и методы для вывода графики. Также широко используются в графике такие классы, как
Pen
,
Brush
,
Color
,
Rectangle
,
Line
,
Image
.

Класс Pen

Класс

Pen
используется для создания пера, при помощи которого проводятся прямые и кривые линии. В отличие от полной версии .NET Framework, поддерживающей четыре перегруженных версии конструктора
Pen
, .NET Compact Framework позволяет создавать перо только с помощью двух конструкторов. При вызове метода
Pen(Color)
создается перо указанного цвета. Конструктор
Pen(Color, Single)
позволяет создавать перо указанных цвета и ширины. Но второй вариант поддерживается только в .NET Compact Framework 2.0.

В листинге 6.1 приведен пример создания перьев синего и красного цветов. Затем при помощи перьев создаются две линии.

Листинг 6.1

private void Form1_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // Синее перо толщиной 1 пиксел

 Pen bluePen = new Pen(Color.Blue);

 // Красное перо толщиной 5 пикселов

 Pen redFatPen = new Pen(Color.Red, 5);

 g.DrawLine(bluePen, 10, 10, 230, 10);

 g.DrawLine(redFatPen, 10, 20, 230, 20);

}

Класс Brush

Класс

Brush
является абстрактным классом для создания кистей, с помощью которых можно рисовать фигуры и текст на графической поверхности. Библиотека .NET Compact Framework поддерживает
классы
SolidBrush
и
TextureBrush
. К сожалению, класс
LinearGradientBrush
, позволяющий рисовать красивые фигуры, в настоящее время не поддерживается.

Класс SolidBrush

При создании объекта

SolidBrush
нужно просто указать цвет, который будет использоваться для отображения фигур. Чтобы сменить цвет кисти, достаточно указать новый цвет в свойстве
Color
. В листинге 6.2 приведен код, который позволяет нарисовать зеленый круг и желтый прямоугольник.

Листинг 6.2

private void Form1_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // Создаем кисть зеленого цвета

 SolidBrush myBrush = new SolidBrush(Color.Green);

 // Рисуем закрашенный круг

 g.FillEllipse(myBrush, 10, 30, 30, 30);

 // Меняем цвет кисти на желтый

 myBrush.Color = Color.Yellow;

 // Рисуем закрашенный прямоугольник

 g.FillRectangle(myBrush, 50, 30, 50, 25);

}

Класс TextureBrush

Класс

TextureBrush
позволяет создавать текстурную кисть. Подобная текстурная кисть позволяет не рисовать однородным цветом, а применять текстурное заполнение отображаемых графических примитивов. Использование подобной кисти позволяет добиваться красивых эффектов. В листинге 6.3 приведен пример использования текстурной кисти с использованием изображения, входящего в состав Windows Mobile 2003.

Листинг 6.3

private void Form1_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // выбираем рисунок

 Image myImage = new Bitmap(@"\Windows\alerts.bmp");

 // создаем текстурную кисть TextureBrush

 texture = new TextureBrush(myImage);

 // Рисуем эллипс, заполненный рисунком

 g.FillEllipse(texture, 10, 60, 120, 120);

 g.Dispose;

}

ВНИМАНИЕ

Такие свойства класса TextureBrush, как Transform и WrapMode, не поддерживаются в .NET Compact Framework 2.0.

Класс Color

При создании перьев или кистей применялся класс

Color
. Он позволяет задавать цвет либо с помощью предопределенного названия, либо указывая составные части цвета в модели RGB. Например, для создания красного цвета можно использовать код, приведенный в листинге 6.4.

Листинг 6.4

// красный цвет по названию

Color redColor = Color.Red;

// красный цвет из компонентов RGB

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

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

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

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Сердце для стража

Каменистый Артем
5. Девятый
Фантастика:
фэнтези
боевая фантастика
9.20
рейтинг книги
Сердце для стража

Жандарм 3

Семин Никита
3. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Жандарм 3

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Отмороженный 11.0

Гарцевич Евгений Александрович
11. Отмороженный
Фантастика:
боевая фантастика
рпг
попаданцы
фантастика: прочее
фэнтези
5.00
рейтинг книги
Отмороженный 11.0

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Бастард Императора. Том 4

Орлов Андрей Юрьевич
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 4

Кодекс Крови. Книга VII

Борзых М.
7. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VII

Идеальный мир для Лекаря 5

Сапфир Олег
5. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 5

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар