1. Home
  2. Docs
  3. HTML
  4. HTML Grafiken
  5. HTML Canvas

HTML Canvas

HTML Canvas (<canvas>-Element) ermöglicht es Entwicklern, dynamische Grafiken und Animationen direkt im Browser zu erstellen. Es bietet eine flexible und leistungsstarke Methode, um Bilder, Diagramme, Spiele und andere visuelle Inhalte darzustellen. In diesem Artikel erfahren Sie, wie Sie das Canvas-Element effektiv nutzen können, einschließlich grundlegender Zeichenoperationen und fortgeschrittener Techniken.

1. Was ist das

Das <canvas>-Element ist ein HTML5-Element, das eine bitmapbasierte Fläche bereitstellt, auf der Sie mit JavaScript zeichnen können. Es ist besonders nützlich für die Erstellung von Grafiken, die sich dynamisch ändern oder interaktiv sein müssen.

1.1. Grundstruktur

Hier ist ein einfaches Beispiel, um ein Canvas-Element in HTML einzufügen:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Canvas Beispiel</title>
    <style>
        canvas {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <h1>Mein Canvas</h1>
    <canvas id="meinCanvas" width="500" height="400"></canvas>
    <script src="script.js"></script>
</body>
</html>

2. Arbeiten mit Canvas und JavaScript

Um auf das Canvas-Element zu zeichnen, benötigen Sie JavaScript. Sie verwenden die getContext-Methode, um eine Zeichenfläche zu erstellen.

2.1. 2D-Kontext erhalten

var canvas = document.getElementById("meinCanvas");
var ctx = canvas.getContext("2d");

2.2. Grundlegende Zeichenoperationen

2.2.1. Rechtecke zeichnen

// Rechteck zeichnen
ctx.fillStyle = "blue"; // Füllfarbe setzen
ctx.fillRect(50, 50, 150, 100); // x, y, Breite, Höhe

2.2.2. Kreise zeichnen

// Kreis zeichnen
ctx.beginPath(); // neuen Pfad beginnen
ctx.arc(200, 200, 50, 0, Math.PI * 2, false); // x, y, Radius, Startwinkel, Endwinkel
ctx.fillStyle = "red";
ctx.fill(); // Füllung anwenden
ctx.stroke(); // Umrandung zeichnen

2.2.3. Linien zeichnen

// Linie zeichnen
ctx.beginPath();
ctx.moveTo(10, 10); // Startpunkt
ctx.lineTo(200, 100); // Endpunkt
ctx.strokeStyle = "green"; // Linienfarbe
ctx.stroke(); // Linie zeichnen

3. Text und Bilder im Canvas

3.1. Text zeichnen

ctx.font = "20px Arial"; // Schriftart und Größe setzen
ctx.fillStyle = "black"; // Textfarbe setzen
ctx.fillText("Hallo, Canvas!", 50, 50); // Text zeichnen (Text, x, y)

3.2. Bilder zeichnen

Um Bilder im Canvas darzustellen, müssen Sie zuerst ein Bildobjekt erstellen und es dann zeichnen.

var bild = new Image();
bild.src = "bild.jpg"; // Bildquelle

bild.onload = function() {
    ctx.drawImage(bild, 0, 0, 100, 100); // Bild zeichnen (Bild, x, y, Breite, Höhe)
};

4. Animationen im Canvas

Animationen können erstellt werden, indem Sie eine Funktion verwenden, die wiederholt aufgerufen wird. Hier ein einfaches Beispiel:

4.1. Animierte Bewegung

var x = 0; // Startposition

function animate() {
    ctx.clearRect(0, 0, canvas.width, canvas.height); // Canvas leeren
    ctx.fillStyle = "blue"; // Farbe für das Rechteck
    ctx.fillRect(x, 100, 50, 50); // Rechteck zeichnen
    x += 1; // x-Position erhöhen
    if (x < canvas.width) {
        requestAnimationFrame(animate); // nächste Animationsframe anfordern
    }
}

animate(); // Animation starten

Häufig gestellte Fragen

Was ist der Zweck des <canvas>-Elements?

Das <canvas>-Element ermöglicht das Zeichnen von Grafiken und die Erstellung von Animationen direkt im Browser mithilfe von JavaScript.

Kann ich Bilder im Canvas verwenden?

Ja, Sie können Bilder im Canvas zeichnen, indem Sie das drawImage-Methode verwenden, nachdem das Bild geladen wurde.

Wie kann ich Animationen im Canvas erstellen?

Sie können Animationen erstellen, indem Sie eine Funktion erstellen, die wiederholt aufgerufen wird, um die Grafiken zu aktualisieren, z.B. mit requestAnimationFrame.

Unterstützt Canvas Touch- und Mausklick-Events?

Ja, das Canvas-Element unterstützt Ereignisse wie click, mousemove und touchstart, die Sie zur Interaktion mit Grafiken verwenden können.

Wie kann ich den 2D-Kontext des Canvas erhalten?

Sie erhalten den 2D-Kontext, indem Sie die Methode getContext("2d") auf dem Canvas-Element aufrufen.