WPF:在for循环中更新画布

本文关键字:更新 循环 for WPF | 更新日期: 2023-09-27 18:04:28

我在WPF的for循环中更新画布时有问题。在我的应用程序中,我有很多帧的stickfigures数据,我想绘制2个不同记录的stickfigures彼此相邻。我知道绘图功能可以工作,但我无法让我的代码不断更新画布。我只能看到最后一帧的简笔画。我知道,对于其他帧的stickfigures正在计算,但他们没有显示在画布上。

我使用PolyLine函数绘制stick - figures。

这是我使用的for循环。

for (int i = 0; i < recording1.Count; i++)
        {
            skeletCanvas1.Children.Clear();
            skeletCanvas2.Children.Clear();
            skeletCanvas1.Children.Add(drawLine(points1((double[])recording1[i]), brush1));
            skeletCanvas1.Children.Add(drawLine(points2((double[])recording1[i]), brush1));
            skeletCanvas1.Children.Add(drawLine(points3((double[])recording1[i]), brush1));
            skeletCanvas1.Children.Add(drawLine(points4((double[])recording1[i]), brush1));
            skeletCanvas1.Children.Add(drawLine(points5((double[])recording1[i]), brush1));
            skeletCanvas2.Children.Add(drawLine(points1((double[])recording2[i]), brush2));
            skeletCanvas2.Children.Add(drawLine(points2((double[])recording2[i]), brush2));
            skeletCanvas2.Children.Add(drawLine(points3((double[])recording2[i]), brush2));
            skeletCanvas2.Children.Add(drawLine(points4((double[])recording2[i]), brush2));
            skeletCanvas2.Children.Add(drawLine(points5((double[])recording2[i]), brush2));
            skeletCanvas1.UpdateLayout();
            skeletCanvas2.UpdateLayout();
            System.Threading.Thread.Sleep(100);
        }

谢谢你的帮助。

WPF:在for循环中更新画布

你看不到GUI上的任何更新,因为你的单线程应用程序正在使用GUI线程来循环。一个解决方案是使用一个计时器,或者一个辅助线程。