Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР 2 Языки программирования академ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
319.49 Кб
Скачать

3. Пример выполнения работы

Задание. Реализовать эффект движения простейшего геометрического объекта (круга) внутри области рисования с «отскакиванием от стенок». Предусмотреть возможность изменения его цвета и скорости движения. Изменение цвета круга происходит при щелчке в нем левой кнопкой мыши. Скорость регулируется с помощью компонента TrackBar.

3.1. Визуальное проектирование диалогового окна

Внешний вид главного окна приложения приведен на рисунке 2.7.

Рис. 2.7. Главное окно приложения

Для графической панели pictureBox1 устанавливаются свойства:

Свойство

Значение

Описание

BorderStyle

Fixed3D

Стиль границы

BackColor

White

Цвет фона

Настройки компонента trackBar1 будут рассматриваться далее.

3.2. Проектирование программного кода

3.2.1. Начальное рисование фигуры

Т.к. в данном приложении будет создаваться кисть со штриховой заливкой, прежде всего, необходимо в файл главной формы подключить пространство имен System.Drawing.Drawing2D.

Для рисования круга необходимо иметь координаты его центра и радиус. Для этого нужно объявить соответствующие переменные в классе формы:

int x0, y0;

int radius;

Начальные значения этим переменным можно установить в конструкторе формы или в обработчике события Load. Здесь начальное положение круга – левый нижний угол области рисования, радиус – 30 пикселей.

x0 = 30;

y0 = pictureBox1.Height - 35;

radius = 30;

Рисование круга будет производиться в обработчике события Paint области рисования pictureBox1. Процесс рисования состоит из создания объекта Graphics, очистки области рисования, создания кисти и непосредственного рисования круга. Кисть создается как объект класса HatchBrush (штриховая кисть). При этом первым параметром задается стиль заливки (здесь – HatchStyle.SolidDiamond – «шахматка»), вторым параметром – основной цвет заливки (желтый). Можно указать и третий параметр – «неосновной» цвет или цвет фона (по умолчанию – черный). При рисовании круга (метод FillEllipse()) необходимо задать кисть для заливки, координаты левого верхнего угла прямоугольника, ограничивающего окружность, а также его стороны. Код обработчика приведен ниже:

private void pictureBox1_Paint(object sender, PaintEventArgs e)

{

//создаем графический объект

Graphics g = e.Graphics;

//очищаем область рисования

g.Clear(Color.White);

//создаем штриховую кисть желтого цвета

HatchBrush brush = new HatchBrush(HatchStyle.SolidDiamond, Color.Yellow);

//рисуем круг

g.FillEllipse(brush, x0 - radius, y0 - radius, 2 * radius, 2 * radius);

}

3.2.2. Реализация движения фигуры

Реализация движения основана на использовании компонента-таймера (Timer). После помещения на форму его свойству Interval (интервал в миллисекундах, через который поступает сигнал от таймера) устанавливается значение 10.

По нажатию кнопки «Start» необходимо активизировать («включить») таймер, а кнопки «Stop» – остановить его.

//кнопка "Start"

private void button1_Click(object sender, EventArgs e)

{

timer1.Start();

}

//кнопка "Stop"

private void button2_Click(object sender, EventArgs e)

{

timer1.Stop();

}

Чтобы заставить фигуру «двигаться», достаточно изменять ее координаты по сигналу таймера, после чего перерисовать фигуру:

private void timer1_Tick(object sender, EventArgs e)

{

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

x0++;

y0--;

//обновляем область рисования (перерисовываем круг)

pictureBox1.Invalidate();

}

В данном случае после нажатия кнопки «Start» круг будет двигаться по диагонали вправо вверх (координата x увеличивается, y – уменьшается), пока не исчезнет за пределами области рисования или пока не будет нажата кнопка «Stop».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]