ЛАБОРАТОРНАЯ РАБОТА 9

ЛАБОРАТОРНАЯ РАБОТА 10. Простейшая анимация
Цель лабораторной работы: изучить возможности Visual Studio по создание простейшей анимации. Написать и отладить программу, выводящую на экран анимационное изображение.
10.1. Работа с таймером
Класс для работы с таймером (Timer) формирует в приложении повторяющиеся события. События повторяются с переодичностью, указанной в милисекундах, в свойстве Interval. Установка свойства Enabled в значение true запускает таймер. Каждый тик таймера порождает событие Tick, обработчик которого обычно и создают в приложении. В этом обработчике могут изменятся каике либо величины, и вызватся принудительная перирисовка окна. Напоминаем, что вся отрисовка при создании анимации должна находится в обработчике события Paint.
10.2. Создание анимации
Для создании простой анимации достаточно использовать таймер, при тике которого будут изменятся параметры изображения (например, координаты концов отрезка) и обрабочки события Paint для рисования по новым параметрам. При таком подходе не надо заботиться об удалении старого изображения (как в идеологии MS DOS), ведь оно создается в окне заново.
В качестве примера рассмотрим код анимации секундной стрекли часов:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{ //описываем переменные достыпные в любом обработчике событий класса Form1
private int x1, y1, x2, y2, r;
private double a;
private Pen pen = new Pen(Color.DarkRed, 2);

public Form1()
{
InitializeComponent();
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawLine(pen, x1, y1, x2, y2); //рисуем секундную стрелку

}

private void Form1_Load(object sender, EventArgs e)
{ //определяем цент экрана
x1 = ClientSize.Width / 2;
y1 = ClientSize.Height / 2;
r = 150; //задаем радиус
a = 0; //задаем угол поворота
//определяем конец часовой стрелки с учетом центра экрана
x2 = x1 + (int) (r * Math.Cos(a));
y2 = y1 - (int) (r * Math.Sin(a));
}

private void timer1_Tick(object sender, EventArgs e)
{
a -= 0.1;//уменьшаем угол на 0,1 радиану
//определяем конец часовой стрелки с учетом центра экрана
x2 = x1 + (int)(r * Math.Cos(a));
y2 = y1 - (int)(r * Math.Sin(a));
Invalidate(); //вынудительный вызов перерисовки (Paint)
}
}
}


10.3. Выполнение индивидуального задания
Изучите с помощью справки MSDN методы и свойства классов Graphics, Color, Pen и SolidBrush. Создайте собственное приложение выводящий на форму рисунок, состоящий из различных объектов (линий, многоугольников, эллипсов, прямоугольников и пр.), не закрашенных и закрашенных полностью. Используйте разные цвета и стили линий (сплошные, штриховые, штрих-пунктирные).

Создайте программу, показывающую пульсирующее сердце.
Создайте приложение, отображающее вращающийся винт самолета.
Разработайте программу анимации двигающегося человечка.
Создайте программу, показывающую движение окружности по синусойде.
Создайте приложение, отображающее движение окружности по спирали.
Разработайте программу анимации падения снежинки.
Создайте программу, показывающую скачущий мячик.
Создайте приложение, отображающее движение окружности вдоль границы окна. Учтите возможность изменения размеров окна.
Разработайте программу анимации летающего бумеранга.
Создайте программу, показывающую падение нескольких звезд одновременно.
Создайте приложение, отображающее хаотичное движение звезды в окне.
Разработайте программу анимации взлета ракеты. Старт осуществялется по нажатию специальной «красной» кнопки.
Создайте программу, показывающую движение окружности вдоль многоугольника. Число вершин вводится пользователем до анимации.
Создайте приложение, отображающее броуновское движение молекулы в окне.
Разработайте программу анимации движения планет в солнейчной системе.
Создайте программу, показывающую движение квадратика по траектории, состоящей из 100 точек, и хранящихся в специальном массиве.
Создайте приложение, имитирующие механические часы.
Разработайте программу анимации падения несколько листков с дерева. Движение не должно быть линейным.
Создайте программу, показывающую движение окружности по спирале с плавно изменющейся сокростью.
Создайте приложение, отображающее движение автомобиля с вращающимимся колесами.

Заголовок 1 Заголовок 215

Приложенные файлы

  • doc 10798889
    Размер файла: 36 kB Загрузок: 0

Добавить комментарий