Geometrie für Canvas 2D

Pfadbau und Winkelrechnung für Canvas 2D. Jede Pfadfunktion baut nur den Pfad; sie ruft niemals fill() oder stroke() auf — wie gemalt wird, entscheidet die aufrufende Seite.

Verwendung

import { roundRectByArc, getLinearGradient } from 'ranuts/utils';

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

roundRectByArc(ctx, 10, 10, 200, 80, 12);
ctx.fillStyle = getLinearGradient(ctx, 10, 10, 200, 80, 'linear-gradient(90deg, #06f, #0cf)');
ctx.fill();

API

getAngle

Grad in Bogenmaß.

Parameter

Parameter Beschreibung Typ Standard
deg Winkel in Grad number Erforderlich

Rückgabe

Argument Beschreibung Typ
rad Winkel im Bogenmaß number

getArcPointerByDeg

Der Punkt auf einem Kreis, der zu einem Winkel gehört.

Parameter

Parameter Beschreibung Typ Standard
deg Winkel im Bogenmaß number Erforderlich
r Radius number Erforderlich

Rückgabe

Argument Beschreibung Typ
point [x, y] [number, number]

getTangentByPointer

Die Tangente in einem Punkt auf einem Kreis.

Parameter

Parameter Beschreibung Typ Standard
x x-Koordinate number Erforderlich
y y-Koordinate number Erforderlich

Rückgabe

Argument Beschreibung Typ
line [Steigung, Achsenabschnitt] Array<number>

roundRectByArc

Zeichnet ein Rechteck mit abgerundeten Ecken. Ein Eckenradius, der größer ist als die Hälfte der kürzeren Seite, wird auf diese Hälfte begrenzt, sodass benachbarte Ecken sich nie überlappen.

Parameter

Parameter Beschreibung Typ Standard
ctx 2D-Kontext des Canvas CanvasRenderingContext2D Erforderlich
...rest x, y, w, h, r number[] Erforderlich

Rückgabe

Kein Rückgabewert (void)

fanShapedByArc

Zeichnet ein Tortenstück, samt dem Zwischenraum zu den anderen.

Parameter

Parameter Beschreibung Typ Standard
ctx 2D-Kontext des Canvas CanvasRenderingContext2D Erforderlich
maxRadius Äußerer Radius number Erforderlich
start Anfangswinkel im Bogenmaß number Erforderlich
end Endwinkel im Bogenmaß number Erforderlich
gutter Breite des Zwischenraums zwischen den Stücken number Erforderlich

Rückgabe

Kein Rückgabewert (void)

getLinearGradient

Übersetzt eine CSS-Zeichenkette linear-gradient(...) in einen CanvasGradient des Canvas.

createLinearGradient nimmt nur einen Anfangs- und einen Endpunkt, während CSS die Richtung als Winkel angibt. Deshalb wird der Kreis in acht Sektoren zu 45° geteilt, und die Tangente rechnet den Winkel wieder in Anfangs- und Endkoordinaten auf dem Rand des Rechtecks um. Richtungen als Schlüsselwort (to top, to bottom, to left, to right) werden unmittelbar behandelt.

Parameter

Parameter Beschreibung Typ Standard
ctx 2D-Kontext des Canvas CanvasRenderingContext2D Erforderlich
x x der linken oberen Ecke des Rechtecks number Erforderlich
y y der linken oberen Ecke des Rechtecks number Erforderlich
w Breite des Rechtecks number Erforderlich
h Höhe des Rechtecks number Erforderlich
background etwa linear-gradient(90deg, red, blue) string Erforderlich

Rückgabe

Argument Beschreibung Typ
gradient Lässt sich direkt an fillStyle oder strokeStyle zuweisen CanvasGradient