UWP 闪烁文本
UWP blinking text
这听起来很简单,但我找不到实现的方法。
我只想要 TextBlock 中的闪烁文本。有什么方法可以轻松做到吗?
我能想到的唯一方法是使用计时器并手动更改 TextBlock 前景。当然有一种简单的方法可以做到这一点。我就是想不通。
谢谢!
对于闪烁的文字,我认为计时器是最简单的方法。 (虽然我知道你有使用计时器并寻找替代品的想法,但层实际上应该达到目的)
可能像下面这样的东西可以帮助你。
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();
}
现在可以适当调用blinker方法让文字闪烁了。
从代码隐藏 (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>
您可以在 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
动画。
这是 Microsoft 在 MSDN 上的方便参考:Animations Overview。
希望对您有所帮助!
这听起来很简单,但我找不到实现的方法。
我只想要 TextBlock 中的闪烁文本。有什么方法可以轻松做到吗?
我能想到的唯一方法是使用计时器并手动更改 TextBlock 前景。当然有一种简单的方法可以做到这一点。我就是想不通。
谢谢!
对于闪烁的文字,我认为计时器是最简单的方法。 (虽然我知道你有使用计时器并寻找替代品的想法,但层实际上应该达到目的) 可能像下面这样的东西可以帮助你。
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();
}
现在可以适当调用blinker方法让文字闪烁了。
从代码隐藏 (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>
您可以在 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
动画。
这是 Microsoft 在 MSDN 上的方便参考:Animations Overview。
希望对您有所帮助!