Рисование при помощи перемещения мыши

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

//Объявляем глобальные переменные

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

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

public int x_MouseDown, y_MouseDown;

public int x_MouseMove, y_MouseMove;

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

//только после каждого щелчка кнопки,

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

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

bool OffOn = false;

private void Form1_MouseDown(object sender, MouseEventArgs e)

{

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

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

x_MouseDown = e.X;

y_MouseDown = e.Y;

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

OffOn = true;

}

Далее в панели Properties на вкладке Events дважды щелкаем имя второго события, например, MouseMove, показанное на рис. 26.4. Появляется шаблон метода Form1_MouseMove для обработки события MouseMove в виде перемещения мыши. После записи нашего кода шаблон принимает следующий вид.

Листинг 26.2. Метод Form1_MouseMove для перемещения мыши.

private void Form1_MouseMove(object sender, MouseEventArgs e)

{

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

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

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

//на this Form1:

Graphics g = this.CreateGraphics();

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

//в моменты перемещения мыши:

x_MouseMove = e.X;

y_MouseMove = e.Y;

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

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

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

//Если переключатель рисования

//в виде переменной OffOn равен true:

if (OffOn == true)

{

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

//рисуется линия заданного цвета и толщины:

g.DrawLine(myPen, x_MouseDown, y_MouseDown,

x_MouseMove, y_MouseMove);

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

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

x_MouseDown = x_MouseMove;

y_MouseDown = y_MouseMove;

}

}

В панели Properties на вкладке Events дважды щелкаем имя следующего события, например, MouseUp (рис. 26.4). Появляется шаблон функции Form1_ Form1_MouseUp для обработки события MouseUp в виде освобождения кнопки мыши в исходное положение. После записи нашего кода шаблон принимает такой вид.

Листинг 26.3. Метод Form1_MouseUp для освобождения кнопки мыши.

private void Form1_MouseUp(object sender, MouseEventArgs e)

{

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

OffOn = false;

}

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

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

private void button1_Click(object sender, EventArgs e)

{

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

Graphics g = this.CreateGraphics();

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

//Form1 от рисунка:

g.Clear(BackColor);

}

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