gpt4 book ai didi

c# - 简单的闪烁文本

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:41 25 4
gpt4 key购买 nike

我正在尝试使用 C#/WPF 中尽可能少的代码来构建一个闪烁“Hello World”文本的简单演示项目。我写的编译和运行,但实际上并没有使文本闪烁(它基于每 2 秒触发一次并更改标签可见性的计时器。关于为什么文本不闪烁或更有效的方法的任何想法方法是什么?代码:

using System;
using System.Timers;
using System.Windows;

namespace BlinkingText
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
static Timer _timer;
static MainWindow window = new MainWindow();

public MainWindow()
{
InitializeComponent();

Start();
}

public static void Start()
{
var timer = new Timer(2000);
timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
timer.Enabled = true;
_timer = timer;
}

public static void _timer_Elapsed(object sender, ElapsedEventArgs e)
{

if (window.HelloWorldLabel.Visibility == Visibility.Hidden)
{
Application.Current.Dispatcher.Invoke((Action)delegate
{
window.HelloWorldLabel.Visibility = Visibility.Visible;
});
}
else
{
Application.Current.Dispatcher.Invoke((Action)delegate
{
window.HelloWorldLabel.Visibility = Visibility.Hidden;
});
}
}
}
}

最佳答案

应用程序中的文本不会闪烁,因为您在隐藏的 MainWindow 实例中更改了标签的可见性,这与您在屏幕上看到的不一样。

创建者

static MainWindow window = new MainWindow();

但从未显示。

除此之外,您应该像这样使用 DispatcherTimer:

public partial class MainWindow : Window
{
private readonly DispatcherTimer timer =
new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) };

public MainWindow()
{
InitializeComponent();

timer.Tick += Timer_Tick;
timer.Start();
}

private void Timer_Tick(object sender, EventArgs e)
{
HelloWorldLabel.Visibility = HelloWorldLabel.Visibility == Visibility.Visible
? Visibility.Hidden : Visibility.Visible;
}
}

您也可以完全在 XAML 中执行类似的操作,例如像这样:

<TextBlock Text="Hello, World.">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetProperty="Visibility"
Duration="0:0:4" RepeatBehavior="Forever">

<DiscreteObjectKeyFrame
KeyTime="0:0:0"
Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame
KeyTime="0:0:2"
Value="{x:Static Visibility.Hidden}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>

关于c# - 简单的闪烁文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654374/

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