Полная версия

Главная arrow Информатика arrow Введение в программирование на языке Visual C#

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

Заставка 13. Рисование с помощью мыши.

Комментарий: с помощью мыши пользователь может рисовать любую геометрическую фигуру на форме. Рассматривая события для формы, можно найти такие события, относящиеся к мыши, как MouseDown (нажали клавишу мыши), MouseUp (отпустили клавишу мыши), MouseMove (сдвинули мышь) и т.д.

Если рассмотреть заголовок процедуры private void Forml_MouseMove (object sender, MouseEventArgs e), то мы видим два параметра, один с именем sender, имеющий тип Object. Он обозначает объект, с которым случилось событие, в нашем случае — форма. Другой параметр имеет имя е и относится к классу MouseEventArgs. Данный параметр содержит информацию о событии, например, какая кнопка мыши была нажата и какие координаты в данный момент у мыши.

Добавим в проект еще одну форму (Form2) и выставим свойство Startposition = CenterScreen. На вторую форму добавим кнопку buttonl (выход из программы) и напишем ее код:

Application. ExitQ;

Реализация листинга 231 позволит пользователю рисовать на форме с помощью мыши.

Листинг 231

using System.Drawing.Drawing2D;

namespace WindowsApplicationl

{

public partial dass Forml : Form

{

int x, у; //Координаты мыши при предыдущем наступлении события MouseMove

Bitmap xolst;

Graphics gr, mygraf;

Pen pn = new Pen(Color.Black, 3); //Цвет карандаша public Forml()

{

InitializeComponent();

}

private void Forml_Load(object sender, EventArgs e)

{

xolst = new Bitmap(this.Width, this.Height); gr = Graphics.Fromlmage(xolst); mygraf = this.CreateGraphics();

//Иначе линия получается не гладкая (с изломами) pn.StartCap = LineCap.Round; pn.EndCap = LineCap.Round;

}

private void Forml_MouseDown(object sender, MouseEventArgs e)

{ //В начальный момент времени, когда нажимается кнопка мыши,

//предыдущее и текущее положения мыши совпадают х = е.Х; у = е.Y;

}

private void Forml_MouseMove(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Left)

//Рисуем отрезок прямой от текущего положения мыши до

предыдущего

gr.DrawLine(pn, е.Х, e.Y, х, у); mygraf.DrawLine(pn, e.X, e.Y, x, у);

//Запоминаем текущее положение мыши х = е.Х; у = e.Y;

}

private void buttonl_Click(object sender, EventArgs e) {

Form2 f = new Form2(); this.Hide(); f.ShowDialog();

}

}

}

Результат выполненной программы показан на рисунке 256.

Рисунок, выполненный с помощью мыши

Рис. 256. Рисунок, выполненный с помощью мыши

 
<<   СОДЕРЖАНИЕ   >>