Рисование линий при помощи нажатия кнопки мыши

 

Листинг 27.1. Объявляем глобальные переменные и записываем наш код.

//Объявляем глобальные переменные для координат "x" и "y"

//указателя мыши в момент 1-го и 2-го нажатий кнопки мыши:

public int x_MouseDown_1, y_MouseDown_1,

x_MouseDown_2, y_MouseDown_2;

//Чтобы рисование осуществлялось только после каждого щелчка

//кнопки,объявляем переключатель рисования

//в виде глобальной переменной OffOn:

bool OffOn = false;

private void Form1_MouseDown(object sender, MouseEventArgs e)

{

//Объявляем объект "g" класса Graphics

//и при помощи функции CreateGraphics

//предоставляем ему возможность рисования

//на this форме Form1:

Graphics g = this.CreateGraphics();

//Выбираем перо "myPen" красного цвета Red

//толщиной в 3 пикселя:

Pen myPen = new Pen(Color.Red, 3);

//Определяем координаты "x" и "y" указателя мыши

//в момент нажатия кнопки мыши:

x_MouseDown_2 = e.X;

y_MouseDown_2 = e.Y;

//Проверяем условие для переменной OffOn:

//Если переменная OffOn равна

//исходному значению false,

if (OffOn == false)

{

//то задаем координаты указателя мыши

//после первого нажатия кнопки мыши:

x_MouseDown_1 = x_MouseDown_2;

y_MouseDown_1 = y_MouseDown_2;

//Изменяем значение OffOn на противоположное:

OffOn = true;

}

else

{

//Если переключатель в виде переменной OffOn

//равен true, то рисуем линию между предыдущей

//и последующей позицией указателя мыши

//в момент нажатия кнопки мыши:

g.DrawLine(myPen, x_MouseDown_1, y_MouseDown_1,

x_MouseDown_2, y_MouseDown_2);

//Задаем предыдущей позиции указателя мыши

//координаты данной позиции указателя мыши:

x_MouseDown_1 = x_MouseDown_2;

y_MouseDown_1 = y_MouseDown_2;

}

}

Чтобы удалить, в случае необходимости, то, что мы нарисовали, дважды щелкаем кнопку с надписью “Очистить панель” в режиме проектирования. Появляется шаблон функции button1_Click для обработки события в виде щелчка этой кнопки. В тело шаблона записываем код из предыдущей главы для такой же функции, но с небольшим дополнением, как показано на следующем листинге.

Листинг 27.2. Метод button1_Click для стирания рисунка.

private void button1_Click(object sender, EventArgs e)

{

//Объявляем объект "g" класса Graphics:

Graphics g = this.CreateGraphics();

//Очищаем (Clear) клиентскую область Form1 от рисунка:

g.Clear(BackColor);

//Чтобы рисование осуществлялось только от позиции

//курсора на предыдущем щелчке до позиции курсора

//на данном щелчке кнопки мыши,задаем переключателю

//в виде глобальной переменной OffOn

//первоначальное значение:

OffOn = false;

}

Предлагаю ознакомиться с аналогичными статьями: