Automatischer Farbwechsel - Teil 1

Im vorherigen Beispiel haben wir die Hintergrundfarbe eines Labels bei Klick auf den Button gewechselt.

Jetzt soll die Hintergrundfarbe des Formulares automatisch die Farbe wechseln.

Wir erzeugen mit einer for-Schleife ein Farbenspiel.

 

So soll unser Formular aussehen:

Bei klick auf Start soll also unser Programm starten.

 

Aufgabenstellung für unser Programm:

  1. Schleife von 0 bis 255 (für die RGB-Farben) erzeugen

    for (x = 0; x <= 255; x++)
  2. .Net bietet viele vordefinierte Farben. Mit der Methode Color.FromArgb() können Sie aber auch Ihre
    eigenen Farben definieren in dem Sie in der Klammer drei Zahlen für (RGB) eingeben.
    Einen Rot-, einen Grün- und einen Blau-Wert.

  3. Dem Betriebssystem erlauben, dass es während der Ausführung des Programmes auch andere Dinge machen kann.
    Diese Anweisung ist wichtig, da ansonsten alle CPU-Zyklen blockiert werden.

    Application.DoEvents();

  4. Um den Farbwechsel nicht zu schnell durchlaufen zu lassen, sollten wir unser Programm etwas bremsen.
    Wir fügen der Schleife eine Anweisung hinzu, die eine Verzögerung von 10ms vor dem nächsten Durchlauf einbaut.

    System.Threading.Thread.Sleep(10);
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace projekt4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int x = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            for (x = 0; x <= 255; x++)
            {
                this.BackColor = Color.FromArgb(x, 255 - x, x); //RGB-Farben

                Application.DoEvents();

                System.Threading.Thread.Sleep(10); //10ms Verzögerung
            }
        }
    }
}

 

 


Erweitern Sie das Programm, indem die Farben wieder auf den Anfangszustand zurücklaufen.

 

Aufgabenstellung für unser Programm:

Weitere Schleife einfügen, bei der x von 255 auf 0 zurückzählt

for (x = 255; x >= 0; x--) 
{
  this.BackColor = Color.FromArgb(x, 255 - x, x); //RGB-Farben

  Application.DoEvents();

  System.Threading.Thread.Sleep(1); //10ms Verzögerung
}

 

Den fertigen Code finden Sie hier:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace projekt4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int x = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            for (x = 0; x <= 255; x++)
            {
                this.BackColor = Color.FromArgb(x, 255 - x, x); //RGB-Farben

                Application.DoEvents();

                System.Threading.Thread.Sleep(1); //10ms Verzögerung
            }
            for (x = 255; x >= 0; x--)
            {
                this.BackColor = Color.FromArgb(x, 255 - x, x); //RGB-Farben

                Application.DoEvents();

                System.Threading.Thread.Sleep(1); //10ms Verzögerung
            }
        }
    }
}