Лабораторная работа Анимация элементов управления и объектов формы. Ход лабораторной работы: Создать приложение, по заданию преподавателя, с реализацией всех алгоритмов анимации, рассмотренных в тексте лабораторной работы. 1. При помощи свойства окна BackgroundImage (Фон) установить рисунки, которые с заданными интервалами времени будут поочередно сменять друг друга в режиме анимации, на этом изменяющемся фоне должны быть размещены элементы управления. Для создания любой анимации необходимо ввести компонент Timer, его свойство Enabled выбрать True, в свойстве Interval задать, например значение 1000. Установки для таймера можно выполнить и в программе: private void InitializeTimer ( ) { // включаем таймер Timer1.Enabled = true; //генерируем событие Tick через каждый интервал времени, равный Interval Timer1.Interval = 1000; } Возможны три варианта реализации анимационного эффекта: 1) анимация выполняется безостановочно столько, сколько выполняется приложение, и анимационный объект (текст, кнопка, цвет и др.) изменяется за каждый интервал времени Interval. 2) анимация выполняется безостановочно столько, сколько выполняется приложение, но анимационный объект изменяется не за каждый интервал времени Interval, а через заданное число интервалов N_Interval. 3) Анимация выполняется столько времени, какое число интервалов времени задано, и после этого времени анимационный объект останавливается в заданном положении. Пример реализации анимации первого варианта. Дважды щелкаем значок timer1 и вводим следующий код: bool myText = false; private void timer1_Tick( object sender, EventArgs e) {//задаем чередование текста «Форма» и «Форма с анимацией» if (myText == false) this.Text = “Форма”; myText = true; } else { this.Text = “Форма с анимацией”; myText = false; } } Код для создания анимации. Вариант 2. // объявляем счетчик числа интервалов и задаем его начальное значение private int counter = 0; // Объявляем и задаем число интервалов после которого один текст сменяет другой. private int N_Interval = 3; 1 private void timer1_Tick( object sender, EventArgs e) {//проверяем, значение счетчика равно или еще нет числу интервалов после которого //один текст сменяется другим if(counter >= N_Interval) { this.Text = “Форма”; counter = 0; } else { this.Text = “Форма с анимацией”; counter ++; } } Код для создания анимации. Вариант 3. // объявляем счетчик числа интервалов и задаем его начальное значение private int counter = 0; // Объявляем и задаем число интервалов после которого один текст сменяет другой. private int N_Interval = 3; private int i_Interval_Stop = 0; private int N_Interval_Stop = 10; private void timer1_Tick( object sender, EventArgs e) { i_Interval_Stop ++; if(i_Interval_Stop >= N_Interval_Stop) timer1.Enabled = false; if(counter >= N_Interval) { this.Text = “Форма”; counter = 0; } else { this.Text = “Форма с анимацией”; counter ++; }} Алгоритм бегущего заголовка формы: Начиная с первой буквы, поэтапно появляются буквы заголовка (по одной букве) с заданным интервалом времени Interval. После появления всех букв заголовка он исчезает, и цикл побуквенного вывода заголовка повторяется. Алгоритм анимации в виде мигающего переключателя. После появления формы на ней начинает мигать названия одного из переключателей, bool myText = false; private void timer1_Tick( object sender, EventArgs e) {//задаем чередование текста «Форма» и «Форма с анимацией» if (myText == false) this.radioButton1.Text = “Название1”; myText = true; } else { this.radioButton1.Text = “ ”; myText = false; 2 } } Анимация в виде циклического изменения непрозрачности панели В разрабатываемой вычислительной системе чтобы на первой форме были видны результаты расчетов, и чтобы за полупрозрачной первой формой были видны другие формы с другими результатами расчетов. Степень непрозрачности формы Opacity по умолчанию имеет 100 – процентную непрозрачность при значении равном 1. Если значение Opacity равно 0, то форма полностью прозрачна. Таким образом, реализуйте следующее: в режиме выполнения форма появляется с заданным значением свойства непрозрачности, затем значение свойства Opacity увеличивается пошагово до максимального значения. Заполнение фигур Рассмотрим пример заполнения фигур. Заполнение фигуры осуществляется в одной плоскости при помощи какого –либо цвета с заданным шагом и заданным свойством индикатора процесса ProgressBar. Если заполняется прямоугольная фигура, то используется метод FillRectangle, и шаг задается как приращение заполняемой высоты в пикселях; если фигура заполняется как криволинейный сектор, например, эллипса, используется метод FillPie, и шаг задается в виде приращения центрального угла сектора в градусах; фигура заполняется за каждый шаг за время, которое установлено с помощью элемента TrackBar и компонента Timer; скорость заполнения фигуры устанавливается по значению свойства Interval объекта timer, и это свойство программно задается в зависимости от свойства Value ползунка элемента управления TracBar; таким образом, скорость заполнения изменяется за счет перемещения ползунка; Процесс заполнения фигуры будем проектировать внутри клиентской области в виде окна элемента управления PictureBox. Верхний левый угол этого окна является началом координат при проектировании геометрии заполняемой фигуры. На форме свойства элемента Trackbar устанавливаем следующие: Minimum 1, Maximum 1000, Value 1000,SmallChange 10,TickFrequency 100. Для элемента ProgressBar в свойстве Anchor выбираем Bottom. Добавить пространство имен using System.Drawing.Drawing2D; В панели Properties элемента PictureBox на вкладке Events дважды щелкаем по строке Paint. 3 Дважды щелкаем элемент управления TrackBar и вводим } Чтобы подключить к работе таймер, дважды щелкаем по объекту timer и добавляем следующий программный код. Для заполнения фигуры в виде эллипса используйте вместо метода FillRectangle () метод FillEllipse (). Для заполнения эллипса как криволинейного сектора с увеличивающимся центральным углом в коде замените строку с методом FillRectangle на myGraphics.FillPie(myHatchBrush, 0, 0, pictureBox1.Size.Width,pictureBox1.Size.Height progressBar1.Height,0,heigth_fill); изменить значение свойства Maximum объекта progressBar1 на 360, и закомментируйте строку // progressBar1.Maximum = pictureBox1.Height; Изображение летающего предмета. Задание: Добавьте в проект форму с летающим объектом, который при ударе о край окна издает звуковой сигнал. Общая методика использования функций из других платформ. Например, необходимо использовать метод или функции из любого другого комплекса, например из Visual Basic 2005. Для этого: В панели Add Reference (.Net) выделяем динамически подключаемую библиотеку Microsoft. VisualBasic.dll. В комплексе Visual Basic, например можно записать функцию Beep(), издающую звуковой сигнал в функцию для обработки события Tick таймера. Для использования ее в проекте C# надо записать следующее: Microsoft. VisualBasic . Interaction .Beep ( ); Объявляем объект и глобальные переменные, которым задаем некоторые значения. 4 Дважды щелкнув по форме, в появившемся шаблоне записываем следующий код: 5 Дважды щелкаем по объекту Timer и вводим следующий код: Метод для элемента управления TrackBar. Для того, чтобы иметь возможность запускать и останавливать процесс анимации, на форму добавьте кнопку, объявите переменную offon и введите следующий код в методе кнопки. 6 Задание: Реализуйте изменение цвета элемента управления и надписи. Задание: Реализуйте мигающий текст. 7