ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.12.2023

Просмотров: 58

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

new Point(200,400),new Point(100,300) });
g.FillRectangle(myTrum, 250, 200, 350, 100);
int x = 50; int Radius = 50;
while (x <= 800 - Radius)
{g.FillPie(mySeа, 0 + x, 375, 50, 50, 0, -180); x += 50; }
for (int i = 300; i <= 550; i += 50)
{ g.DrawEllipse(myWind, i, 240, 20, 20); }
}


Результат работы программы

Метод узловой точки


private void Form1_Paint(object sender, PaintEventArgs e)
{
int x = 50, y = 50, a = 10;
Graphics g = e.Graphics;
g.Clear(Color.Yellow);
Point[] raketa =
{
new Point(x, y),
new Point(x + 3 * a, y),
new Point(x + 5 * a, y + a),
new Point(x + 11 * a, y + a),
new Point(x + 13 * a, y + 3 * a),
new Point(x + 11 * a, y + 5 * a),
new Point(x + 5 * a, y + 5 * a),
new Point(x + 3 * a, y + 6 * a),
new Point(x, y + 6 * a),
new Point(x + 2 * a,y + 4 * a),
new Point(x + 2 * a, y + 2 * a),
new Point(x,y),
};


Point[] sled =
{
new Point(x - 2 * a, y + a),
new Point(x + a, y + 2 * a),
new Point(x + a, y + 4 * a),
new Point(x - 2 * a, y + 5 * a),
new Point(x - 2 * a, y + a),
};
SolidBrush B1 = new SolidBrush(Color.DarkMagenta);
SolidBrush B2 = new SolidBrush(Color.Red);
g.FillPolygon(B1, raketa);
g.FillPolygon(B2, sled);
SolidBrush B3 = new SolidBrush(Color.Blue);
g.FillEllipse(B3, x + 6 * a, y + 5 * a / 2, a, a);
g.FillEllipse(B3, x + 8 * a, y + 5 * a / 2, a, a);
g.FillEllipse(B3, x + 10 * a, y + 5 * a / 2, a, a);
}


150,200, 20
350, 350 30

Элемент управления Timer


Timer является компонентом для запуска действий, повторяющихся через определенный промежуток времени. События повторяются с периодичностью, указанной в миллисекундах в свойстве Interval. Установка свойства Enabled в значение true запускает таймер.
Хотя он не является визуальным элементом, но его также можно перетащить с Панели Инструментов на форму:

Элемент управления Timer


Наиболее важные свойства и методы таймера:
Свойство Enabled: при значении true указывает, что таймер будет запускаться вместе с запуском формы
Свойство Interval: указывает интервал в миллисекундах, через который будет срабатывать обработчик события Tick, которое есть у таймера
Метод Start(): запускает таймер
Метод Stop(): останавливает таймер


    Событие Tick


Каждый тик таймера порождает событие Tick, обработчик которого обычно и создают в приложении. В этом обработчике могут изменяться какие-либо величины, и вызываться принудительная перерисовка окна. Для создания анимации весь код, рисующий что-либо на форме, должен находиться в обработчике события Paint.


    Для создания простой анимации достаточно использовать таймер, при тике которого будут изменяться параметры изображения (например, координаты концов отрезка) и вызываться обработчик события Paint для рисования по новым параметрам. При таком подходе не надо заботиться об удалении старого изображения, ведь оно создается в окне заново.
    Invalidate() – метод, делающий недействительной всю поверхность элемента управления и вызывающий его перерисовку.


int t;


int t;
private void timer1_Tick(object sender, EventArgs e)
{
label2.Text = Convert.ToString(t++); // отсчет времени
if (t % 5 == 0) button1.Left += 5; // перемещение кнопки
}


    Событие timer1_Tick

int t;


int t;
private void timer1_Tick(object sender, EventArgs e)
{
label2.Text = Convert.ToString(t++); // отсчет времени
if (t % 5 == 0) button1.Left += 5; // перемещение кнопки
}
private void button1_Click(object sender, EventArgs e)
{
if (timer1.Enabled == true)
{ timer1.Stop(); }
else
{ timer1.Start(); }
}


    Обработчик события Button1_Click


С помощью обработчика события нажатия кнопки можно либо остановить таймер, либо его опять запустить


int x1 = 100, y1 = 100, x2 = 10, y2 = 10;
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.Clear(Color.Yellow);
Pen myPen = new Pen(Color.Red, 2);
g.FillEllipse(Brushes.LightGray, x1, y1, x2, y2);
}
int t = 0;
private void timer1_Tick(object sender, EventArgs e)
{
t = t+1;
label2.Text = t.ToString();
x2 = x2 + 1; // изменение большой полуоси эллипса а
y2 = y2 + 1; // изменение малой полуоси эллипса b
Invalidate(); //Принудительный вызов перерисовки Paint
}
private void button1_Click(object sender, EventArgs e)
{
if (timer1.Enabled == true) { timer1.Stop(); }
else { timer1.Start(); }
}


    Создание анимации


    Результат работы программы

Метод узловой точки. Движение ракеты


int x1 = 50, a1=10;
private void Form1_Paint(object sender, PaintEventArgs e)
{
int x = x1, y = 50, a = a1;
Graphics g = e.Graphics;
g.Clear(Color.Yellow);
Point[] raketa =
{
new Point(x, y),
new Point(x + 3 * a, y),
new Point(x + 5 * a, y + a),
new Point(x + 11 * a, y + a),
new Point(x + 13 * a, y + 3 * a),
new Point(x + 11 * a, y + 5 * a),
new Point(x + 5 * a, y + 5 * a),
new Point(x + 3 * a, y + 6 * a),
new Point(x, y + 6 * a),
new Point(x + 2 * a,y + 4 * a),
new Point(x + 2 * a, y + 2 * a),
new Point(x,y),
};


Point[] sled =
{
new Point(x - 2 * a, y + a),
new Point(x + a, y + 2 * a),
new Point(x + a, y + 4 * a),
new Point(x - 2 * a, y + 5 * a),
new Point(x - 2 * a, y + a),
};
SolidBrush B1 = new SolidBrush(Color.DarkMagenta);
SolidBrush B2 = new SolidBrush(Color.Red);
g.FillPolygon(B1, raketa);
g.FillPolygon(B2, sled);
SolidBrush B3 = new SolidBrush(Color.Blue);
g.FillEllipse(B3, x + 6 * a, y + 5 * a / 2, a, a);
g.FillEllipse(B3, x + 8 * a, y + 5 * a / 2, a, a);
g.FillEllipse(B3, x + 10 * a, y + 5 * a / 2, a, a);
}
private void button1_Click(object sender, EventArgs e)
{
if (timer1.Enabled == true) { timer1.Stop(); }
else { timer1.Start(); }
}
private void timer1_Tick(object sender, EventArgs e)
{
x1 = x1 + 5;
Invalidate(); //Принудительный вызов перерисовки Paint
}