Start · Sprachen · JavaScript · Referenz · CanvasRenderingContext2D.strokeStyle

CanvasRenderingContext2D.strokeStyle

Eigenschaft

Legt die Farbe, den Verlauf (<code>CanvasGradient</code>) oder das Muster (<code>CanvasPattern</code>) fest, mit dem Umrisse von Pfaden und Formen gezeichnet werden.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

CanvasRenderingContext2D.strokeStyle

Beschreibung

Die Eigenschaft strokeStyle bestimmt, womit der 2D-Kontext Linien und Umrisse zeichnet – also alles, was über stroke(), strokeRect() oder strokeText() ausgegeben wird. Zugewiesen werden kann ein CSS-Farbwert als Zeichenkette (z. B. "red", "#ff8800", "rgb(0 128 255 / 50%)", "hsl(200 80% 50%)"), ein CanvasGradient oder ein CanvasPattern. Der Standardwert ist "#000000" (Schwarz).

Der Wert gehört zum Zeichenzustand des Kontexts: Er gilt für alle folgenden Strich-Operationen, bis er erneut geändert wird, und lässt sich mit save() und restore() sichern bzw. wiederherstellen. Bereits gezeichnete Linien werden durch eine spätere Änderung nicht beeinflusst – entscheidend ist der Wert zum Zeitpunkt des stroke()-Aufrufs.

Beim Auslesen liefert die Eigenschaft Farben in normalisierter Form zurück: deckende Farben als "#rrggbb", transparente als "rgba(r, g, b, a)". Wurde ein Verlauf oder Muster zugewiesen, erhält man genau dieses Objekt zurück. Ungültige Zeichenketten werden stillschweigend ignoriert – der vorherige Wert bleibt erhalten.

Das Gegenstück für Füllungen ist fillStyle. Die Strichstärke, Linienenden und -verbindungen steuert man separat über lineWidth, lineCap, lineJoin und setLineDash().

Parameter

Name Typ Default Beschreibung
$value Pflicht string | CanvasGradient | CanvasPattern "#000000" Neuer Strichstil: ein beliebiger gültiger CSS-<color>-Wert als Zeichenkette, ein mit createLinearGradient()/createRadialGradient()/createConicGradient() erzeugter Verlauf oder ein mit createPattern() erzeugtes Muster.

Rückgabewert

Typ
string | CanvasGradient | CanvasPattern
Beschreibung
Der aktuelle Strichstil. Farben werden normalisiert zurückgegeben ("#rrggbb" bzw. "rgba(r, g, b, a)"), Verläufe und Muster als das zugewiesene Objekt.

Beispiele

Rechtecke mit unterschiedlichen Umrissfarben

const canvas = document.querySelector('#leinwand');
const ctx = canvas.getContext('2d');

ctx.lineWidth = 4;

ctx.strokeStyle = 'crimson';
ctx.strokeRect(10, 10, 100, 60);

ctx.strokeStyle = 'rgb(0 128 255 / 50%)';
ctx.strokeRect(130, 10, 100, 60);

// Normalisierte Rückgabe prüfen
console.log(ctx.strokeStyle);
rgba(0, 128, 255, 0.5)

Linie mit linearem Farbverlauf

const ctx = document.querySelector('#leinwand').getContext('2d');

const verlauf = ctx.createLinearGradient(20, 0, 280, 0);
verlauf.addColorStop(0, '#ff5f6d');
verlauf.addColorStop(1, '#2193b0');

ctx.strokeStyle = verlauf;
ctx.lineWidth = 10;
ctx.lineCap = 'round';

ctx.beginPath();
ctx.moveTo(20, 100);
ctx.lineTo(280, 100);
ctx.stroke();

console.log(ctx.strokeStyle instanceof CanvasGradient);
true

Farbpalette in einer Schleife mit save()/restore()

const ctx = document.querySelector('#leinwand').getContext('2d');
const farben = ['#e63946', '#f4a261', '#2a9d8f', '#264653'];

ctx.lineWidth = 3;

farben.forEach((farbe, i) => {
  ctx.save();
  ctx.strokeStyle = farbe;
  ctx.beginPath();
  ctx.arc(50 + i * 60, 60, 25, 0, Math.PI * 2);
  ctx.stroke();
  ctx.restore();
});

// Nach restore() ist wieder der Standardwert aktiv
console.log(ctx.strokeStyle);
#000000

Ungültige Werte werden ignoriert

const ctx = document.createElement('canvas').getContext('2d');

ctx.strokeStyle = 'teal';
ctx.strokeStyle = 'keine-farbe'; // ungültig → wird verworfen

console.log(ctx.strokeStyle);
#008080

// Wichtig · Fallstricke

  • Stille Fehler: Ungültige Farbwerte werfen keinen Fehler, sondern werden ignoriert. Bei unerwartet schwarzen Linien zuerst die Farbschreibweise prüfen.
  • Kein Vergleich mit der Eingabe: Wegen der Normalisierung liefert ctx.strokeStyle = 'red' beim Auslesen "#ff0000". Direkte Stringvergleiche mit dem gesetzten Wert schlagen daher oft fehl.
  • Zeitpunkt zählt: Der Stil wird beim Aufruf von stroke() ausgewertet. Wer mehrere Linien in einem Pfad sammelt und dazwischen die Farbe ändert, erhält alle Linien in der zuletzt gesetzten Farbe – für unterschiedliche Farben jeweils beginPath() und stroke() aufrufen.
  • Verläufe sind kontextbezogen: Verlaufs-Koordinaten beziehen sich auf das Koordinatensystem zum Zeitpunkt des Zeichnens (inkl. translate()/scale()), nicht auf die einzelne Form.
  • CSS-Variablen wie var(--akzent) werden nicht aufgelöst; den Wert vorher mit getComputedStyle() auslesen. currentcolor bezieht sich auf das <canvas>-Element.
  • Kompatibilität: In allen Browsern unterstützt, ebenso in OffscreenCanvasRenderingContext2D. Moderne Farbsyntax (Leerzeichen-getrenntes rgb(), oklch(), color()) hängt von der CSS-Unterstützung des jeweiligen Browsers ab; createConicGradient() ist erst in neueren Versionen verfügbar.