1

Необходимо сделать в главном окне в центре Label и чтобы каждые 2 секунды текст плавно сменялся другим. Текст можно указать в массиве string[], сделать это в цикле, но нужно плавное изменение. В winFoms этого можно добиться через Timer и изменение цвета, есть ли в WPF какой-нибудь более быстрый способ?

Fresto
  • 1,158

1 Answers1

0
private void button_Click(object sender, RoutedEventArgs e)
    {
        button.Opacity = 0;
        timer = new DispatcherTimer();
        timerZ = new DispatcherTimer();
        timer.Interval = interval;
        timer.Tick += Timer_Tick;
        timer.Start();

    }

    DispatcherTimer timer, timerZ;


    double i = 1;
    int z = 0;
    bool isUpper = false;
    private void Timer_Tick(object sender, EventArgs e)
    {
        if (isUpper)
        {
            Label.Opacity = i;
            i = Label.Opacity + 0.01;
            if(i > 1)
            {
                isUpper = false;
            }
        }
        else
        {
            Label.Opacity = i;
            i = Label.Opacity - 0.01;
            if (i < 0)
            {
                if (z != text.Count)
                {
                    if (z == 4)
                    {
                        intervalZ = new TimeSpan(0, 0, 0, 0, 25);
                        timerZ.Interval = intervalZ;
                        timer.Interval = intervalZ;
                    }
                    TextBlock.Text = text[z];
                    z++;
                    i = 0;
                    isUpper = true;
                }
                else
                {
                    timer.Stop();
                }
            }
        }

    }

Нашел я всё же решение. Изменяю по таймеру свойство Opacity

Fresto
  • 1,158
  • Зачем этот изврат? Простите. Есть же DoubleAnimation для этого. https://learn.microsoft.com/ru-RU/dotnet/desktop/wpf/graphics-multimedia/animation-overview, используйте анимации, они будут работать плавнее и не надо будет писать кучу кода. Ссылку на пример вам дали в комментариях под вопросом. Вот здесь я показывал, как управлять анимациями из кода. – aepot Jun 17 '23 at 08:36