Книга: Программирование КПК и смартфонов на .NET Compact Framework
Графический редактор
Графический редактор
Теперь, когда мы ознакомились с графическими методами, настало время написать простейший графический редактор с минимальными возможностями. В этом приложении можно будет рисовать при помощи стилуса линии, а также прямые цветные линии из трех цветов. Процесс рисования узоров на экране КПК при помощи стилуса гораздо больше похож на реальное рисование, чем рисование мышью в стандартных графических редакторах.
Весь код программы сводится к обработке событий мыши MouseDown
, MouseMove
и MouseUp
. В принципе, приемы создания графических эффектов ничем не отличаются от соответствующих приемов, применяемых на обычных персональных компьютерах. Я взял два примера из своей книги «Занимательное программирование на Visual Basic .NET» и перенес код в проект с учетом синтаксиса языка С#, что иллюстрирует листинг 6.22.
Листинг 6.22
private int x_md, y_md;
Pen myPen = new Pen(Color.LightBlue);
private bool bPaint;
Graphics g;
private Pen erasePen;
private Point ptsStart;
private Point ptsPrevious;
private Point ptsCurrent;
private void Form1_MouseDown(object sender, MouseEventArgs e) {
// Начинаем рисование
bPaint = true;
if (mnuLines.Checked) {
ptsStart.X = e.X;
ptsStart.Y = e.Y;
ptsPrevious = ptsStart;
}
if (mnuPaint.Checked) {
// координаты стилуса при нажатии
x_md = e.X;
y_md = e.Y;
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e) {
if (bPaint) {
if (mnuLines.Checked) {
ptsCurrent.X = e.X;
ptsCurrent.Y = e.Y;
g = CreateGraphics();
g.DrawLine(erasePen, ptsStart.X, ptsStart.Y, ptsPrevious.X, ptsPrevious.Y);
g.DrawLine(myPen. ptsStart.X, ptsStart.Y, ptsCurrent.X, ptsCurrent.Y);
ptsPrevious = ptsCurrent;
g.Dispose();
}
if (mnuPaint.Checked) {
g = CreateGraphics();
int x_mm = e.X;
int y_mm = e.Y;
g.DrawLine(myPen, x_md, y_md, x_mm, y_mm);
x_md = x_mm;
y_md = y_mm;
g.Dispose();
}
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e) {
bPaint = false;
}
private void mnuClear_Click(object sender, EventArgs e) {
g = CreateGraphics();
g.Clear(this.BackColor);
g.Dispose();
}
private void Form1_Load(object sender, EventArgs e) {
erasePen = new Pen(this.BackColor);
}
private void mnuPaint_Click(object sender, EventArgs e) {
mnuPaint.Checked = !mnuPaint.Checked;
mnuLines.Checked = !mnuLines.Checked;
}
private void mnuGreenPen_Click(object sender, EventArgs e) {
myPen.Color = Color.Green;
}
private void mnuRedPen_Click(object sender, EventArgs e) {
myPen.Color = Color.Red;
}
На рис. 6.9 показано, как выглядит созданный графический редактор в работе.
Рис. 6.9. Простейший графический редактор
- Классы для программирования графики
- Класс Pen
- Класс Brush
- Класс SolidBrush
- Класс TextureBrush
- Класс Color
- Класс Font
- Класс Icon
- Класс Bitmap
- Структура Point
- Структура Rectangle
- Графические методы
- Создание собственных методов DrawPie и FillPie
- Создание фонового рисунка для формы
- Копирование рисунка
- Поддержка прозрачности
- Округленные прямоугольники
- Создание экранных снимков
- Метод Lockbits
- Графический редактор
- Дополнительные материалы
- Графический цвет
- 2.6.2. Графический редактор Paint
- Глава 8 Осваиваем графический редактор Paint
- Глава 5. Редактор растровой графики «ГИМП»
- Графический редактор ресурса Google Документы
- 2.4. Видеокарта (графический адаптер или графический ускоритель)
- Графический редактор http:
- 5.4 «ГИМП» – программируемый графический редактор
- Глава 14 Программы для обработки фото: краткий обзор, для чего могут пригодиться