Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 9: Программирование на Visual C# искусственного интеллекта. Издание 3
Шрифт:
Для создания любой анимации необходимо ввести компонент Timer по схеме:
1. На панели инструментов Toolbox щёлкаем строку Timer (рис. 2.3).
2. Щёлкаем на форме.
Ниже Form1 появляется значок с надписью timer1 (рис. 2.9), который можно захватить мышью и перенести в другое место.
Отметим, что в отличие от элементов управления компоненты располагаются вне формы и поэтому на форме в режиме выполнения не видны.
3. В панели Properties с заголовком timer1:
в свойстве Enabled вместо False выбираем True (рис. 2.10);
в свойстве Interval вместо
Естественно, эти установки можно выполнить не только в панели Properties, но и в программе, например, при помощи следующего кода.
Листинг 2.2. Метод для включения таймера и задания интервала времени.
В данном Издании тексты программ отсутствуют.
Рис. 2.9. Значок компонента Timer. Рис. 2.10. Панель Properties.
Теперь в режиме выполнения проекта с интервалом в эти 500 миллисекунд (или 0,5 секунды) будет генерироваться запрограммированное нами событие Tick и выполняться при помощи метода timer1_Tick (см. ниже листинг 2.3), а именно, в данной главе будет мигать заголовок формы.
Следовательно, мы закончили визуальную разработку анимационного эффекта и теперь нам необходимо написать код программы. Этот код может иметь много вариантов.
Рассмотрим, например, три варианта:
1) анимация выполняется безостановочно столько, сколько выполняется наше приложение, и анимационный объект (текст, кнопка, цвет и т.д.) изменяется за каждый интервал времени Interval;
2) анимация выполняется безостановочно столько, сколько выполняется наше приложение, но анимационный объект изменяется не за каждый интервал времени Interval, а через заданное нами число интервалов N_Interval ;
3) анимация выполняется столько времени, какое число интервалов времени мы задали, и после этого времени анимационный объект останавливается в заданном нами положении.
Сначала изучим первый вариант, когда анимация выполняется безостановочно за каждый интервал времени Interval. Для этого дважды щёлкаем значок timer1 (рис. 2.8) в режиме проектирования (или в панели Properties на вкладке Events дважды щёлкаем по имени единственного события Tick).
Появляется файл Form1.cs с автоматически сгенерированным шаблоном метода, выше которого объявляем булеву переменную, а в шаблон записываем такой код.
Листинг 2.3. Код для создания анимации. Вариант 1.
В данном Издании тексты программ отсутствуют.
В этом коде использовано правило переноса текста с одной строки на другую.
Теперь изучим второй вариант, когда анимация выполняется безостановочно столько, сколько выполняется наше
Листинг 2.4. Код для создания анимации. Вариант 2.
В данном Издании тексты программ отсутствуют.
И наконец, изучим третий вариант, когда анимация выполняется столько времени, какое число интервалов времени N_Interval_Stop мы задали, и после этого времени анимационный объект останавливается в заданном нами положении. Для этого в файле Form1.cs выше того же (что и в предыдущем варианте) автоматически сгенерированного шаблона метода объявляем большее число переменных, а в шаблон записываем более общий код, как показано на следующем листинге.
Листинг 2.5. Код для создания анимации. Вариант 3.
В данном Издании тексты программ отсутствуют.
Так как здесь мы впервые применили метод timer1_Tick, а далее постоянно будем его применять, то дадим краткие пояснения.
Автоматически сгенерированный заголовок метода
private void timer1_Tick(object sender, EventArgs e)
говорит нам о том, что метод timer1_Tick обрабатывает (Handles) событие Tick, периодически (с заданным интервалом при помощи свойства Interval) возбуждаемое объектом (таймером) timer1. В строке (bool myText = false;) мы объявляем булеву глобальную переменную myText выше метода timer1_Tick. Если бы переменную myText мы задали в виде локальной переменной внутри метода timer1_Tick, то при каждом новом вызове (с заданным интервалом) этого метода timer1_Tick значение переменной myText оставалось бы неизменным, и анимации не получилось бы.
По какому-либо одному варианту кода, например, по первому варианту строим программу и запускаем на выполнение обычным образом: Build, Build Selection; Debug, Start Without Debugging.
В ответ Visual C# выполняет программу и на рабочий стол выводит форму в режиме выполнения. На этой форме с заданной нами частотой в 500 миллисекунд (или 0,5 секунды) заголовок “Калькулятор (Calculator)” сменяется на “Калькулятор с анимацией (Calculator with animation)” (рис. 2.10), и таким образом создаётся эффект анимации.
Рис. 2.10. Форма с анимационным заголовком.
Если на листингах 2.3 – 2.5 вместо слова "Калькулятор (Calculator)" записать оператор "" (т.е. удалить слово "Калькулятор (Calculator)"), то будет появляться и исчезать только второй заголовок формы "Калькулятор с анимацией (Calculator with animation)", и этот заголовок будет только мигать (без замены текста) с заданной частотой. Далее на этом калькуляторе можно выполнять описанные выше расчёты (рис. 2.10).