Компьютерная графика, мультимедиа и игры на Visual C#


Глава Рисование заполненных прямоугольников и эллипсов при помощи нажатия кнопки мыши


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

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

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

public int x_MouseDown_1, y_MouseDown_1;

//Определяем координаты указателя в момент нажатия кнопки:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

      x_MouseDown_1 = e.X; y_MouseDown_1 = e.Y;

}

В панели Properties для элемента управления PictureBox на вкладке Events дважды щелкаем имя второго события MouseUp. Появляется шаблон, который после записи нашего кода принимает следующий вид.

Листинг 29.2. Метод  pictureBox1_MouseUp для обработки отпускания кнопки.

 

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)

{

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

    //ему возможность рисования на pictureBox1:

    Graphics g = Graphics.FromHwnd(pictureBox1.Handle);

    //Создаем и рисуем прямоугольник:

    Rectangle myRectangle = new Rectangle(

      new Point(x_MouseDown_1, y_MouseDown_1),

      new Size(e.X - x_MouseDown_1, e.Y - y_MouseDown_1));

      g.DrawRectangle(new Pen(Color.Transparent),

                                                myRectangle);

    //Выбираем кисть myBrush для линейного градиента

    //между белым White и черным Black цветами:

    LinearGradientBrush myBrush;

    myBrush = new LinearGradientBrush(myRectangle,

            Color.White, Color.Black,

            LinearGradientMode.Horizontal);

    //Рисуем заполненный прямоугольник:

    g.FillRectangle(myBrush, myRectangle);

}

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

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

private void button1_Click(object sender, EventArgs e)




Начало  Назад  Вперед