Книга: Программирование КПК и смартфонов на .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. Простейший графический редактор

Оглавление книги


Генерация: 0.046. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз