Skip to main content

Farben

Bis jetzt haben wir (fast) nur schwarze Rechtecke gezeichnet. Zeit, etwas Farbe ins Spiel zu bringen!

Wie Computer Farben darstellen​

Computer verwenden verschiedene Systeme, um Farben darzustellen. Das gängigste ist RGB - Rot Grün Blau.

RGB - Additive Farbmischung​

Eine Farbe besteht aus drei Zahlen, jeweils zwischen 0 und 255:

  • R (Rot): Wie viel Rot? (0 = kein Rot, 255 = maximales Rot)
  • G (Grün): Wie viel Grün? (0 = kein Grün, 255 = maximales Grün)
  • B (Blau): Wie viel Blau? (0 = kein Blau, 255 = maximales Blau)

Wichtig: RGB ist additive Farbmischung - wir mischen Licht, nicht Farbe!

  • Alle Werte auf 0 → Schwarz (kein Licht)
  • Alle Werte auf 255 → Weiß (maximales Licht)

Ein Colorwheel mit überschneidenden Kreisen in Rot,Blau und Grün

Beispiele für RGB-Werte​

FarbeRotGrünBlauRGB-Notation
Rot25500rgb(255, 0, 0)
Grün02550rgb(0, 255, 0)
Blau00255rgb(0, 0, 255)
Gelb2552550rgb(255, 255, 0)
Cyan0255255rgb(0, 255, 255)
Magenta2550255rgb(255, 0, 255)
Weiß255255255rgb(255, 255, 255)
Schwarz000rgb(0, 0, 0)
Grau128128128rgb(128, 128, 128)

Farben in Canvas setzen​

In Canvas funktionieren Farben wie bei einem echten Pinsel:

  1. Du wählst eine Farbe (tauchst den Pinsel ein)
  2. Du malst mit dieser Farbe
  3. Die Farbe bleibt aktiv, bis du sie wechselst

fillStyle - Füllfarbe​

Setzt die Farbe für ausgefüllte Formen:

ctx.fillStyle = "rgb(255, 0, 0)";  // Rot wählen
ctx.fillRect(50, 50, 100, 100); // Rotes Rechteck malen

strokeStyle - Randfarbe​

Setzt die Farbe für Umrisse:

ctx.strokeStyle = "rgb(0, 255, 0)";  // Grün wählen
ctx.strokeRect(200, 50, 100, 100); // Grüner Umriss

Wichtig: Das Pinsel-Prinzip​

ctx.fillStyle = "rgb(255, 0, 0)";   // Pinsel in Rot tauchen
ctx.fillRect(50, 50, 100, 100); // Rotes Rechteck
ctx.fillRect(200, 50, 100, 100); // Noch ein rotes Rechteck!

ctx.fillStyle = "rgb(0, 0, 255)"; // Pinsel in Blau tauchen
ctx.fillRect(350, 50, 100, 100); // Blaues Rechteck

Drei Rechtecke: zwei rote nebeneinander, dann ein blaues - um zu zeigen, dass die Farbe aktiv bleibt

Verschiedene Farbnotationen​

Canvas akzeptiert mehrere Arten, Farben anzugeben:

1. RGB​

ctx.fillStyle = "rgb(255, 100, 50)";

2. Hex-Farben​

ctx.fillStyle = "#FF6432";  // Gleiche Farbe wie oben
ctx.fillStyle = "#F00"; // Kurzform für #FF0000 (Rot)

3. Farbnamen​

ctx.fillStyle = "red";
ctx.fillStyle = "blue";
ctx.fillStyle = "green";
ctx.fillStyle = "yellow";
// ... und viele mehr
tip

RGB gibt dir die meiste Kontrolle, Farbnamen sind am einfachsten für Standardfarben. Eine vollständig Liste aller unterstützten Farb-Namen findest du im MDN

RGBA - Transparenz​

Mit RGBA kannst du Farben halbtransparent machen:

ctx.fillStyle = "rgba(255, 0, 0, 0.5)";  // 50% transparentes Rot

Der vierte Wert (Alpha) liegt zwischen 0 und 1:

  • 0 = komplett transparent (unsichtbar)
  • 0.5 = halbtransparent
  • 1 = komplett undurchsichtig

Beispiel:

ctx.fillStyle = "rgb(255, 0, 0)";
ctx.fillRect(50, 50, 150, 150);

ctx.fillStyle = "rgba(0, 0, 255, 0.5)"; // 50% transparentes Blau
ctx.fillRect(100, 100, 150, 150); // Überlappt das rote

Übung 1: Bunte Rechtecke​

Aufgabe: Male drei überlappende Quadrate in Rot, Grün, Blau mit jeweils 70 Prozent Transparenz Drei überlappende Rechtecke in Rot/Grün/Blau

Übung 2: Schachbrett​

Aufgabe: Denke nochmal an die Übungen aus dem JS Tutorial zurück und male jetzt möglichst effizient ein Schachbrett auf das Canvas. Das Pattern sollte 8x8 Quadrate beinhalten, mit alternierenden Farben und dunklen Farben in der linken unteren Ecke.

danger

64 mal ctx.fillRect zu kopieren, zählt nicht als Lösung für diese Übung

Ein Schachbrett (noch) ohne Figuren

Übung 3: Füllung und Rand​

Aufgabe: Schreibe eine Funktion um ein Quadrat mit Rand zu zeichnen, die Position und Größe des Quadrats sowie die Dicke des Randes, als auch die Farbe des Quadrats und des Randes sollen jeweils als Parameter zu übergeben sein. Nutze dann deine Funktion um das folgenden Bild zu rekonstruieren:

4 Quadrate mit unterschiedlichen Rändern, von oben links im Uhrzeigersinn: Rot, Grün, Gelb, Blau

Tip 1

Zwei übereinanderliegende Rechtecke können den Eindruck eines Randes vermitteln.

Tip 2

Alle Quadrate haben eine Größe von 100

Tip 3

3 von 4 Rändern sind schwarz und 3 von 4 Rändern haben eine positive Breite.