Rectangles
xミリ秒ごとに異なる色(多次元配列に格納されている)を表示したいWPFキャンバスがあります。
Random rnd = new Random();
foreach (var i in Enumerable.Repeat(1, 100))
{
_rectGrid[rnd.Next(0, 30), rnd.Next(0, 30)].Fill = new SolidColorBrush(Colors.Blue);
Thread.Sleep( 100 );
// refresh somehow here?
}
これは機能しますが、MainWindowコンストラクターにあるため、リアルタイムで更新されません。
明らかに、長方形はGUIスレッドで作成する必要がTimer
ありますが、色を変更するためにを作成すると、別のスレッドになります。
値の多次元配列を作成し、その値をRectangle配列の色にバインドして、別のスレッドからそれらにアクセスできるようにすることはできますか?それを行う場合、GUIスレッドに再描画するように指示するにはどうすればよいですか?
コンストラクターでこれが発生しないように、ユーザーが最初にクリックするボタンを使用する方が簡単かもしれません。
EDIT:
うまくいきましたDispatcherTimer
。MSがこれのために別のクラスを持っている理由は私を超えています。
これが私がそれを使用したソースです。