Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Text zeichnen

Nachdem wir im vorherigen Kapitel gesehen haben, wie man Stile und Farben anwendet, beschäftigen wir uns nun damit, wie man Text auf das Canvas zeichnet.

Text zeichnen

Der Canvas-Rendering-Kontext bietet zwei Methoden, um Text zu rendern:

fillText(text, x, y [, maxWidth])

Füllt einen gegebenen Text an der angegebenen (x,y)-Position. Optional mit einer maximalen Breite.

strokeText(text, x, y [, maxWidth])

Zeichnet einen Umriss eines gegebenen Textes an der angegebenen (x,y)-Position. Optional mit einer maximalen Breite.

Ein fillText Beispiel

Der Text wird mit dem aktuellen fillStyle gefüllt.

js
function draw() {
  const ctx = document.getElementById("my-canvas").getContext("2d");
  ctx.font = "48px serif";
  ctx.fillText("Hello world", 10, 50);
}

Ein strokeText Beispiel

Der Text wird mit dem aktuellen strokeStyle gefüllt.

js
function draw() {
  const ctx = document.getElementById("my-canvas").getContext("2d");
  ctx.font = "48px serif";
  ctx.strokeText("Hello world", 10, 50);
}

Text stylen

In den obigen Beispielen verwenden wir bereits die font Eigenschaft, um den Text etwas größer als die Standardgröße darzustellen. Es gibt noch weitere Eigenschaften, mit denen Sie die Darstellung des Textes auf dem Canvas anpassen können:

font = value

Der aktuelle Textstil, der beim Zeichnen von Text verwendet wird. Dieser String verwendet dieselbe Syntax wie die CSS font Eigenschaft. Die Standardschriftart ist 10px sans-serif.

textAlign = value

Textausrichtung. Mögliche Werte: start, end, left, right oder center. Der Standardwert ist start.

textBaseline = value

Baseline-Ausrichtung. Mögliche Werte: top, hanging, middle, alphabetic, ideographic, bottom. Der Standardwert ist alphabetic.

direction = value

Richtung. Mögliche Werte: ltr, rtl, inherit. Der Standardwert ist inherit.

Diese Eigenschaften können Ihnen bekannt vorkommen, wenn Sie zuvor mit CSS gearbeitet haben.

Das folgende Diagramm aus der HTML-Spezifikation zeigt die verschiedenen von der textBaseline Eigenschaft unterstützten Baselines.

Die em-over-Basislinie liegt ungefähr oben auf den Glyphen einer Schriftart, die hängende Basislinie ist dort, wo einige Glyphen wie आ verankert sind, die Mitte liegt zwischen der em-over- und der em-under-Basislinie, die alphabetische Basislinie ist, wo Zeichen wie Á, ÿ, f und Ω verankert sind, die ideografische Basislinie ist, wo Glyphen wie 私 und 達 verankert sind, und die em-under-Basislinie liegt ungefähr am unteren Ende der Glyphen einer Schriftart. Die obere und untere Begrenzung des Rahmens können weit von diesen Basislinien entfernt sein, da Glyphen weit außerhalb der em-over- und em-under-Basislinien reichen können.

Ein textBaseline Beispiel

Dieses Beispiel demonstriert die verschiedenen Werte der textBaseline Eigenschaft. Weitere Informationen und detaillierte Beispiele finden Sie auf der Seite CanvasRenderingContext2D.textBaseline.

js
function draw() {
  const ctx = document.getElementById("my-canvas").getContext("2d");
  ctx.font = "48px serif";

  ctx.textBaseline = "hanging";
  ctx.strokeText("hanging", 10, 50);

  ctx.textBaseline = "middle";
  ctx.strokeText("middle", 250, 50);

  ctx.beginPath();
  ctx.moveTo(10, 50);
  ctx.lineTo(300, 50);
  ctx.stroke();
}

Erweiterte Textmessungen

Falls Sie mehr Details über den Text benötigen, ermöglicht es die folgende Methode, ihn zu messen.

measureText()

Gibt ein TextMetrics Objekt zurück, das die Breite in Pixeln enthält, die der angegebene Text haben wird, wenn er im aktuellen Textstil gezeichnet wird.

Der folgende Codeausschnitt zeigt, wie Sie einen Text messen und seine Breite erhalten können.

js
function draw() {
  const ctx = document.getElementById("canvas").getContext("2d");
  const text = ctx.measureText("foo"); // TextMetrics object
  text.width; // 16;
}