0

WPF の for ループ内でキャンバスを更新する際に問題が発生しています。私のアプリケーションでは、多くのフレームからの棒人間からのデータがあり、2 つの異なる録音の棒人間を隣り合わせて描画したいと考えています。描画関数が機能することはわかっていますが、コードでキャンバスを常に更新することはできません。最後のフレームの棒人間しか見えません。他のフレームでは棒人間が計算されていることはわかっていますが、キャンバスには表示されません。

PolyLine 関数を使用して棒人間を描きます。

これが私が使用する 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);
        }

ご協力いただきありがとうございます。

4

1 に答える 1

0

シングル スレッド アプリが GUI スレッドを使用してループしているため、GUI に更新が表示されません。解決策は、タイマーまたはセカンダリ スレッドを使用することです。

于 2013-03-18T20:48:24.460 に答える