gpt4 book ai didi

WPF 文本淡入淡出效果

转载 作者:行者123 更新时间:2023-12-04 15:16:34 24 4
gpt4 key购买 nike

我正在尝试使用 WPF 动画来创建一种效果,当文本属性中的数据发生变化时,文本会淡出,然后再次淡入......或者最好是适当的淡入淡出。

我已经成功完成了一半的工作,下面的代码响应文本更改事件,立即使文本不可见,然后在 3 秒内淡出它。

淡出文本同样简单,我只需更改标签的 From 和 To 属性。但是 - 问题是屏幕上的文字会立即改变。当然,这通常是绝对必需的,但在这种情况下,我希望旧文本淡出,然后新文本淡入。

在 WPF 动画中这样做有什么巧妙的技巧吗?

当前半完成的触发器:

<Style TargetType="TextBlock" x:Key="fadeinout">
<Style.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:3" From="0.0" To="1.0" BeginTime="0:0:0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>

最佳答案

我在这方面与 frances1983 在一起。我要做的是创建一个新的 UserControl,它实际上可以通过淡入淡出无缝地处理旧文本和新文本。

我正在用一个标签做类似的事情,我只想显示几秒钟然后消失。这是我所做的:

<Label  Name="lbl" DockPanel.Dock="Bottom" HorizontalAlignment="Center" Visibility="Collapsed">
<Label.Style>
<Style TargetType="{x:Type Label}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:00" BeginTime="00:00:00" From="0.0" To="1.0" />
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:03" BeginTime="00:00:02" From="1.0" To="0.0" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
Display Text
</Label>

然后在标签文本更改的代码中:
//Make the label visible, starting the storyboard.
lbl.Visibility = Visibility.Visible;

DispatcherTimer t = new DispatcherTimer();
//Set the timer interval to the length of the animation.
t.Interval = new TimeSpan(0, 0, 5);
t.Tick += (EventHandler)delegate(object snd, EventArgs ea)
{
// The animation will be over now, collapse the label.
lbl.Visibility = Visibility.Collapsed;
// Get rid of the timer.
((DispatcherTimer)snd).Stop();
};
t.Start();

您可以轻松地将此示例修改为 UserControl。只需更改 Visibility == Hidden 上的淡出,添加一个与 Visibility == Visible 相反的 Storyboard,
并更改文本并重置 Tick 处理程序内的可见性。

希望这可以帮助!

关于WPF 文本淡入淡出效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com