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. Простейший графический редактор
Дополнительные материалы
Если нужно ознакомиться с дополнительными материалами по программированию графики, то стоит обратиться к статьям документации MSDN. Например, в статье «How to: Display a Gradient Fill» рассказывается том, как раскрасить элемент градиентной заливкой. Также в документации MSDN имеется статья уже известного нам Алекса Яхнина «Creating a Microsoft .NET Compact Framework-based Animation Control», в которой рассказывается о создании элемента управления, способного воспроизводить анимированное изображение, создавая его на основе серии картинок. Тем, кто планирует писать приложения для устройств под управлением Windows Mobile 5.0, стоит обратить внимание на технологию Windows Mobile DirectX and Direct3D, которая дает дополнительные возможности для работы с графикой.
Глава 7
Разработка приложений
Активация и деактивация формы
Модель выполнения программ на карманном компьютере отличается от поведения программ, работающих на обычном персональном компьютере. Например, на мобильных компьютерах используется один экземпляр запущенной программы. Аналогом подобного поведения на настольных компьютерах является почтовая программа Outlook Express, которая всегда запускается в одном экземпляре. При попытке запуска программы она просто активируется (если уже была запущена). При этом вторая копия программы не запускается.