Информатика 1.2 ИШИТР(Попов) / Отчет ЛБ№11(Анимация) Вар2
..docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное
учреждение высшего образования
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Инженерная школа информационных технологий и робототехники
Отделение информационных технологий
Направление информатика и вычислительная техника
Отчет
по лабораторной работе №9
по дисциплине
«Информатика 1.2»
«Анимация»
Выполнил:
Студент группы _________________
Проверил:
Доцент ОИТ ИШИТР _________________ Х.С. Наламвар
Томск 2021
Цель работы
Задание
Изучить возможности Visual Studio по создание простейшей анимации. Написать и отладить программу, выводящую на экран анимационное изображение.
Текст программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp_11_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int x1, y1, x2, y2, x3, y3, x4, y4, r2, r3, r4;
private double a2, a3, a4;
private Pen pen2 = new Pen(Color.Black, 2);
private Pen pen3 = new Pen(Color.Black, 3);
private Pen pen4 = new Pen(Color.Black, 4);
// Перерисовка формы
private void Form1_Paint_1(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawLine(pen2, x1, y1, x2, y2);// Рисуем секундную стрелку
g.DrawLine(pen3, x1, y1, x3, y3);// Рисуем минутную стрелку
g.DrawLine(pen4, x1, y1, x4, y4);// Рисуем часовую стрелку
//Рисуем циферблат
g.DrawEllipse(pen4, x1 - 180, y1 - 180, 360, 360);
g.DrawLine(pen4, x1, y1 - 180, x1, y1 - 160);
g.DrawLine(pen4, x1 + 180, y1, x1 + 160, y1);
g.DrawLine(pen4, x1, y1 + 180, x1, y1 + 160);
g.DrawLine(pen4, x1 - 180, y1, x1 - 160, y1);
}
private void Form1_Load(object sender, EventArgs e)
{
r2 = 150; // Радиус секундной стрелки
r3 = 150; // Радиус минутной стрелки
r4 = 120; // Радиус часовой стрелки
a2 = 0; // Угол поворота секундной стрелки
a3 = 0; // Угол поворота минутной стрелки
a4 = 0; // Угол поворота часовой стрелки
// Определяем центр формы – начало стрелок
x1 = ClientSize.Width / 2;
y1 = ClientSize.Height / 2;
// Конец секундной стрелки
x2 = x1 + (int)(r2 * Math.Sin(a2));
y2 = y1 - (int)(r2 * Math.Cos(a2));
// Конец минутной стрелки
x3 = x1 + (int)(r3 * Math.Sin(a3));
y3 = y1 - (int)(r3 * Math.Cos(a3));
// Конец часовой стрелки
x4 = x1 + (int)(r4 * Math.Sin(a4));
y4 = y1 - (int)(r4 * Math.Cos(a4));
}
private void timer1_Tick(object sender, EventArgs e)
{
a2 += 0.10472; // Увеличиваем угол секундной стрелки на 6 градусов
a3 += 0.00174533; // Увеличиваем угол минутной стрелки на 0.1 градус
a4 += 0.0001454441043; // Увеличиваем угол часовой стрелки на 0.008333 градусов
// Новые координаты концов стрелок
x2 = x1 + (int)(r2 * Math.Sin(a2));
y2 = y1 - (int)(r2 * Math.Cos(a2));
x3 = x1 + (int)(r3 * Math.Sin(a3));
y3 = y1 - (int)(r3 * Math.Cos(a3));
x4 = x1 + (int)(r4 * Math.Sin(a4));
y4 = y1 - (int)(r4 * Math.Cos(a4));
// Принудительный вызов события Paint
Invalidate();
}
}
Результаты работы
Выводы
Я изучил возможности создания простейшей анимации.