UWP闪烁文字

时间:2016-06-21 10:43:31

标签: c# uwp windows-10-universal uwp-xaml

这可能听起来很简单,但我找不到办法。

我只想在TextBlock中使用闪烁的文本。有没有办法轻松实现?

我能想到的唯一方法是使用计时器并手动更改TextBlock前景。当然有一种简单的方法可以做到这一点。我只是无法搞清楚。

谢谢!

3 个答案:

答案 0 :(得分:9)

您可以在XAML标记中声明Storyboard动画,该动画会永久闪烁文本:

<TextBlock Text="I'm Blinking!">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Resources>
                <Storyboard x:Key="flashAnimation" >
                    <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" AutoReverse="True" Duration="0:0:0.5" RepeatBehavior="Forever" />
                </Storyboard>
            </Style.Resources>
        </Style>
    </TextBlock.Style>
</TextBlock>

这是根据我在WPF和WinRT XAML中的经验,但我很确定UWP使用相同的Storyboard动画。

这是微软在MSDN上的便捷参考:Animations Overview

希望这有帮助!

答案 1 :(得分:5)

从后面的代码(C#),您可以使用以下代码执行此操作:

        Storyboard storyboard = new Storyboard();
        storyboard.Duration = new Duration(TimeSpan.FromSeconds(10.0));
        DoubleAnimation opacityAnimation = new DoubleAnimation()
        {
            From = 1.0,
            To = 0.0,
            BeginTime = TimeSpan.FromSeconds(5.0),
            Duration = new Duration(TimeSpan.FromSeconds(5.0))
        };

        Storyboard.SetTarget(opacityAnimation, txtBlink);
        Storyboard.SetTargetProperty(opacityAnimation, "Opacity");
        storyboard.Children.Add(opacityAnimation);
        storyboard.RepeatBehavior = RepeatBehavior.Forever;
        storyboard.AutoReverse = true;
        storyboard.Begin();

假设你有一个文本块:

        <TextBlock x:Name="txtBlink" FontSize="32">Some text</TextBlock>

答案 2 :(得分:0)

对于闪烁文本,我认为计时器是最简单的方法。 (虽然我知道你有使用计时器和寻找替代的想法,但层实际上应该达到目的) 可能像下面的东西可以帮助你。

Timer timer = new Timer();

    public void Blinker()
    {            
        timer.Interval = 500;

        timer.Start();

        timer.Tick += new EventHandler(timer_tick);
    }

    void timer_tick(object sender, EventArgs e)
    {
        if(label3.ForeColor = System.Drawing.Color.Green)
        {
            label3.ForeColor = System.Drawing.Color.White;
        }

        else
        {
            label3.ForeColor = System.Drawing.Color.Green;
        }            
    }

    public void StopBlinker()
    {
        timer.Stop();
    }

现在您可以适当调用闪光灯方法以使文字闪烁。