Компьютерная графика, мультимедиа и игры на Visual C#

         

Анимация в виде циклического изменения непрозрачности панели


В разрабатываемой нами вычислительной системе можно будет одновременно вызвать несколько различных форм, которые могут заслонять друг друга. Чтобы за первой формой была видна другая форма (или несколько других форм), первую форму можно сделать полупрозрачной в такой мере прозрачности, чтобы и на первой форме были видны результаты расчетов, и чтобы за полупрозрачной первой формой были видны другие формы с другими результатами расчетов. Поэтому на данной форме разработаем циклическое изменение непрозрачности цвета этой формы.

Напомним, что степень непрозрачности формы устанавливается в панели Properties (с заголовком Form1) в строке Opacity и по умолчанию имеет 100-процентную непрозрачность (при значении, равном 1).   Если значение свойства Opacity равно 0, то форма полностью прозрачна.

Алгоритм данной анимации формулируем так:

в режиме выполнения форма появляется с заданным нами значением свойства непрозрачности Opacity, например, 30%;

далее значение свойства непрозрачности Opacity увеличивается пошагово (например, с шагом 0.1) до максимального значения 1 (с заданным нами выше в панели Properties интервалом времени Interval для  компонента Timer1);

на каждом шаге значение свойства непрозрачности Opacity выводится в заголовок формы, и подается звуковой сигнал;

после достижения максимального значения 1, свойству непрозрачности Opacity снова задается исходное значение, например, 0.3, и весь цикл увеличения непрозрачности формы повторяется;

на любом шаге мы должны иметь возможность остановить увеличение непрозрачности формы (остановить анимацию), например, щелчком по форме.

Для программной реализации этого алгоритма сначала в панели Properties с заголовком Form1 в строке свойства Opacity изменяем заданное по умолчанию значение 100% на исходное значение, например, на 30% и нажимаем клавишу Enter.

Затем дважды щелкаем значок timer1 (ниже формы в режиме проектирования). Появляется файл Form1.cs с шаблоном, в который записываем код:

    //Увеличиваем непрозрачность на шаг 0.1:


    this.Opacity = this.Opacity + 0.1;

    //При достижении или превышении

    //полной непрозрачности панели, равной 1,

    //возвращаемся к исходной непрозрачности 0.3:

    if (this.Opacity >= 1)

        this.Opacity = 0.3;

    //Выводим значение непрозрачности

    //в заголовок формы:

    this.Text = "Opacity: " + this.Opacity;

В этом коде в строке (this.Opacity = 0.3;) мы можем устанавливать различные значения исходной непрозрачности. 

Задавая в панели Properties с заголовком Timer1 различные значения свойству Interval (а выше мы задали 1000 миллисекунд или 1 секунду), можно уменьшить частоту изменения непрозрачности, чтобы мы успели присмотреться и остановить анимацию при приятном для нашего глаза значении непрозрачности формы.

Методика приостановки и возобновления анимации после щелчка по дополнительной кнопке на форме, а также подачи звукового сигнала приведена выше.


Содержание раздела