3. Programm: ColorMix
Als Nächstes schreiben wir ein Programm, das es in seiner ersten Version gestattet die Grundfarben zu mischen und in einem Fenster sichbar zu machen.
Farben werden am Computer durch das RGB-System (RGB = rot, grün, blau) erzeugt, das auf der additiven Farbmischung von rot, grün und blau basiert. Jede dieser drei Grundfarben kann in ihrer Intensität zwischen 0 und 255 variiert werden, wobei ein Wert von 0 immer schwarz bedeutet und ein Wert von 255 die maximale Intensität der jeweiligen Farbe. Mischt man nun die drei Grundfarben mit unterschiedlichen Intensitäten, so kann dadurch praktisch jede Farbe (soweit der Monitor das zulässt) dargestellt werden. Gelb ist z.B. eine Mischung aus Rot und Grün, beide mit voller Intensität.
Im Computer werden die Farben so codiert, dass alle drei Grundfarben in einen integer-Wert gepackt werden, wobei die 32 Bit einer integer-Variablen wie folgt belegt sind:
Das vorderste Byte enthält diverse Flags, die z.B. für die Windows-Systemfarben benützt werden. Für "normale" Farben ist dieses Byte auf null zu setzen. Die restlichen drei Byte ergeben 224 Farben, die von 0 bis 16777215 "durchnummeriert" sind. Um die jeweilige Farbnummer zu berechnen, müssen die einzelnen Farbbytes an die richtige Stelle gebracht werden. Dazu multipliziert man den Blauwert mit 65536 (216) und den Grünwert mit 256 (28) und addiert dann diese zum Rotwert:
FarbNummer := 65536*b + 256*g + r;
Nun konkret zu unserem Programm: Das Benutzerinterface ist einfach gehalten, mit 3 Schiebereglern (Scrollbars), 3 kleinen Panels, 3 Labels und 1 großen Panel. Die Schieberegler dienen zur Einstellung der Grundfarben, die Panels dienen zur Anzeige der Grundfarben und der Mischfarbe. Die Labels werden zur Beschriftung der Farbkanäle verwendet. Ein mögliches Design der Benutzeroberfläche sehen Sie im folgenden Bild.
Schritt |
Aktivität |
Kommando |
Anmerkungen |
1. |
Erzeugen Sie eine neue Applikation und speichern Sie diese ab. |
File/New/Application
File/Save All |
Details in Programm 1 |
2. |
Bringen Sie folgende Komponenten auf das Formular: 3 Scrollbars, 3 kleine Panels, 1 großes Panel, 3 Labels |
Auswahl in der Komponenten-Palette und Klick auf das Formular |
Falls Sie die selbe Komponente mehrmals benötigen, können Sie mit Shift-Klick auf die Komponenten-Palette diese dauerhaft aktivieren und erzeugen dann mit jedem Klick (ohne vorherige Auswahl) eine Kopie der ausgewählten Komponente. Klicken Sie auf den Pfeil links in der Palette, um die Dauerauswahl rückgängig zu machen. |
3. |
Benennung der Komponenten (z.B. SBarRed, PnlRed, LblRed, ...) |
property Name im Object Inspector einstellen |
Die Benennung der Komponenten sollte so erfolgen, dass man immer weiß welche Komponente wofür zuständig ist. Man macht das, indem man jeweils einen Kurzbezeichner für den Typ und einen Funktionsbezeichner zu einem Namen verbindet; z.B. könnte ein Scrollbar, der die Farbe Blau beeinflusst, SBarBlue genannt werden. |
4. |
Beschriftung der Labels |
property Caption einstellen |
Die Beschriftung der Labels sollte "Rot", "Grün" und "Blau" sein |
5. |
Beschriftung der Panels löschen |
property Caption einstellen |
Die Beschriftung der Panels stört und wird weggenommen, indem man die Property Caption mit einem leeren Wert besetzt. |
6. |
Setzen des Scrollbar-Bereichs |
property Max der Scrollbars auf 255 einstellen |
Da die Basisfarben jeweils Werte zwischen 0 und 255 annehmen können, muss die Property Max aller Scrollbars auf 255 gesetzt werden. Hinweis: Falls man die selbe Property von mehreren Komponenten auf den selben Wert bringen möchte, kann man mit Shift-Klick die Komponenten zuerst auswählen und dann die entsprechende Property auf einmal ändern. |
7. |
Definieren Sie den OnChange Event des roten Scrollbars |
Doppelklick auf OnChange im Object Inspector |
Im OnChange Event wird die Farbe berechnet und auf dem großen Panel ausgegeben.
PnlMix.Color := 65536*SBarBlue.Position +
256*SBarGreen.Position +
SBarRed.Position;
|
8. |
Definieren Sie die OnChange Events für die anderen Scrollbars |
Event Handler für den roten Scrollbar auswählen |
Wir könnten jetzt analog zum "roten" Event Handler für die anderen Scrollbars jeweils die OnChange Events definieren. Es geht aber auch einfacher: Da alle Events Handler exakt gleich sind, kann man für den grünen und den blauen Scrollbar den bereits definierten Event für den roten Scrollbar nehmen. Dies geschieht durch Auswahl im Property Editor (kleinen Pfeil rechts neben der OnChange Event Zeile) |
9. |
Panels mit Grundfarben im Event ansteuern |
Doppelklick auf OnChange Event eines Scrollbars und Code hinzufügen |
Bei der Veränderung irgendeines Scrollbars müssen alle Panels für die Grundfarben eingestellt werden:
PnlRed.Color := SBarRed.Position;
PnlGreen.Color := 256*SBarGreen.Position;
PnlBlue.Color := 65536*SBarBlue.Position;
|
|