显示标签和移动形状

本文关键字:移动 标签 显示 | 更新日期: 2023-09-27 18:35:06

我是C#和WPF的新手。我想执行以下操作:

  1. 在正好 5 秒后一个接一个地显示几个标签,

  2. 完成上述操作后,我必须在画布上移动一个形状大约十次,每次移动之间的时间间隔为 5 秒,

  3. 执行上述操作,但时间间隔仅为 2 秒。

这是代码:

    DispatcherTimer timer2 = new DispatcherTimer();
    float timerTime = 10;
    Label timerlabel = new Label();
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        lbl.Content = "test";
        startDisplay("hello!!");
        startDisplay("bye");
        Shapemove(1);
    }
    private void startDisplay(string st)
    {
        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(5);
        timer.Start();
        timer.Tick += (s, e) =>
        {
            lbl.Content = st;
        };
    }
    private void Shapemove(int i)
    {
        timer2.Interval = new TimeSpan(0, 0, 2);
        timer2.Tick += new EventHandler(timer2_Tick);
        timer2.Start();
    }
    void timer2_Tick(object sender, EventArgs e)
    {
        Random rand = new Random();
        if (timerTime > 0)
        {
            canvas1.Children.Remove(timerlabel);
            timerTime--;
            canvas1.Children.Add(timerlabel);
            timerlabel.FontSize = 20;
            timerlabel.Content = timerTime + "s";
            Canvas.SetLeft(rectangle1, rand.Next(640));
            Canvas.SetTop(rectangle1, rand.Next(480));
        }
        else
        {
            timer2.Stop();
        }
    }

但上面的问题是:

  1. 定时器和定时器2同时启动。

  2. 标签不会一个接一个地显示 - 测试出现,5 秒后再见出现,你好永远不会出现!!

  3. 有没有办法重置计时器并像上面提到的 Shapemove 或 startDisplay 函数一样反复调用它们作为函数?

请帮我解决上述问题。

显示标签和移动形状

不要使用计时器。请改用情节提要。

在故事板中,您可以排列操作可见性,不透明度,位置等的动画。控件的任何(依赖项)属性。

请参阅本教程中的动画