Лабораторная работа №2 по КГ 2009_2010

advertisement
Лабораторная работа
Анимация элементов управления и объектов формы.
Ход лабораторной работы:
Создать приложение, по заданию преподавателя, с реализацией всех алгоритмов
анимации, рассмотренных в тексте лабораторной работы.
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
Related documents
Download