1

こんにちは、4 つの長方形を作成し、それぞれに色を付けました。私は現在、ボタンを押したときにこれらの 4 つのボックスの色をランダムに変更しようとしています (ある種の点滅効果を作成しています)。次のコードを作成しましたが、ボタンを押すとプログラムが動かなくなります。

この状況で役立つことを読んでくださいSystem.Windows.Threading.DispatcherTimer。しかし、それをどのように使用するかは正確にはわかりません。使い方のアドバイスをお待ちしております。ありがとうございました。

namespace testDisco
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        Random r;
        Rectangle[] rects;

        SolidColorBrush blue;
        SolidColorBrush red;
        SolidColorBrush yellow;
        SolidColorBrush green;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            r = new Random();
            rects = new Rectangle[4];

            blue = new SolidColorBrush(Color.FromArgb(255,0,232,255));
            red = new SolidColorBrush(Color.FromArgb(129,56,56,255));
            yellow = new SolidColorBrush(Color.FromArgb(0,232,255,255));
            green = new SolidColorBrush(Color.FromArgb(176,207,176,255));

            rects[0] = rect1;
            rects[1] = rect2;
            rects[2] = rect3;
            rects[3] = rect4;

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            int randomNumber = r.Next(4);
            System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();

            while (true)
            {
                rects[randomNumber].Fill = red;
            }
        }
    }
}
4

2 に答える 2

1

あなたはほとんどそこにいます。プログラムがクラッシュしないように、ループを少し遅くします。

System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();
dt.Interval = TimeSpan.FromSeconds(1); //or whatever interval you want

dt.Tick += (s, e) =>
{ 
    rects[r.Next(0,3)].Fill = red;
}

ただし、ランダムな長方形を選択している間はランダムな色を選択していないため、最終的にはすべて赤になります。

于 2013-10-17T19:50:42.003 に答える
-1

ここで定義されている WPF アニメーション システムを参照してください。

アニメーションの概要 - MSDN

ここに回答を投稿するのは少し複雑ですが、しばらく前に似たようなことをしようとしていたときに見つけました。ただし、自分でやろうとするよりも効果的です。実際、ColorAnimation必要なことを正確に実行できる もあります。

于 2013-10-17T20:03:34.827 に答える