Heim Web-Frontend H5-Tutorial Programmierkenntnisse der HTML5 Canvas API _html5-Tutorial

Programmierkenntnisse der HTML5 Canvas API _html5-Tutorial

May 16, 2016 pm 03:49 PM
api canvas html5


Code kopieren
Der Code lautet wie folgt:



Canvas beitreten


Code kopieren
Der Code lautet wie folgt:

//Holen Sie sich das Canvas-Element und sein Zeichenkontext var canvas = document.getElementById("diagonal");
var context = canvas.getContext("2d");
//Absolute Koordinaten verwenden, um einen Pfad zu erstellen
context.beginPath( );
context.moveTo(70, 140);
context.lineTo(140, 70);
//Zeichne diese Linie auf Canvas
context.Stroke();

Transformieren

Derselbe Effekt wie oben kann durch Transformation (Zoom, Translation, Rotation) usw. erzielt werden.

Zeichnen Sie diagonale Linien mithilfe der Transformation


Code kopieren
Der Code lautet wie folgt:

//Holen Sie sich das Canvas-Element und sein Zeichnungskontext
var canvas = document.getElementById("diagonal");
var context = canvas.getContext("2d");
//Speichern Sie den aktuellen Zeichnungsstatus
context.save ();
//Verschieben Sie den Zeichenkontext nach rechts unten
context.translate(70, 140);
//Zeichnen Sie mit dem Ursprung als Ausgangspunkt das gleiche Liniensegment wie zuvor
context.beginPath();
context .moveTo(0, 0);
context.lineTo(70, -70);
context.Stroke();

context.restore();

Pfad

Pfade in der HTML5 Canvas API stellen jede Form dar, die Sie rendern möchten.

beginPath(): Ganz gleich, mit welcher Art von Grafik Sie beginnen, das erste, was aufgerufen werden muss, ist beginPath. Diese einfache Funktion benötigt keine Parameter und wird verwendet, um die Leinwand darüber zu informieren, dass mit dem Zeichnen einer neuen Grafik begonnen wird.

moveTo(x,y): Verschieben Sie die aktuelle Position zu den neuen Zielkoordinaten (x,y), ohne zu zeichnen.

lineTo(x,y): Verschiebt nicht nur die aktuelle Position zu den neuen Zielkoordinaten (x,y), sondern zeichnet auch eine gerade Linie zwischen den beiden Koordinaten.

closePath(): Diese Funktion verhält sich sehr ähnlich wie lineTo. Der einzige Unterschied besteht darin, dass closePath automatisch die Startkoordinaten des Pfades als Zielkoordinaten verwendet. Außerdem wird der Leinwand mitgeteilt, dass die aktuell gezeichnete Form geschlossen ist oder einen vollständig geschlossenen Bereich bildet, was für zukünftige Füllungen und Striche sehr nützlich ist.

Zeichnen Sie ein Blätterdach einer Kiefer


Code kopieren
Der Code lautet wie folgt:

function createCanopyPath(context) {
// Baumkronen zeichnen
context.beginPath();

context.moveTo(-25, -50);
context.lineTo(-10, -80);
context.lineTo(-20, -80);
context.lineTo( -5, -110);
context.lineTo(-15, -110);

//Die Eckpunkte des Baums
context.lineTo(0, -140);

context.lineTo(15, -110);
context.lineTo(5, -110);
context.lineTo(20, -80);
context.lineTo(10, - 80);
context.lineTo(25, -50);
// Startpunkt verbinden, geschlossener Pfad
context.closePath();
}

function drawTrails() {
var canvas = document.getElementById('diagonal');
var context = canvas.getContext('2d');

context.save();
context.translate(130, 250);

//Erstellen Sie einen Pfad, der das Blätterdach darstellt
createCanopyPath(context);

// Aktuellen Pfad zeichnen
context.Stroke();
Context.restore();
}

window.addEventListener("load", drawTrails, true);

Strichstil

Verwenden Sie den Strichmodus, um die Baumkrone realistischer aussehen zu lassen.


Code kopieren
Der Code lautet wie folgt:

//Zeile erweitern
context .lineWidth = 4;
//Der Verbindungspunkt des glatten Pfades
context.lineJoin = 'round';
//Color
context.StrokeStyle = '#663300';
//Aktuellen Pfad zeichnen
context.Stroke();

Füllstil

context.fillStyle = "#339900"; context.fill();

Zeichne ein Rechteck

Wir fügen dem Baum einen Stamm hinzu

context.fillStyle = '#663300'; context.fillRect(-5, -50, 10, 50);

Zeichnen Sie eine Kurve


Code kopieren
Der Code lautet wie folgt:

context.save();
context.translate(-10, 350);
context.beginPath();

// Die erste Kurve verläuft nach rechts oben
context.moveTo(0, 0);
context.quadraticCurveTo(170, -50, 260, -190);

//Kurve nach rechts unten
context.quadraticCurveTo(310, -250, 410, -250);

// Zeichnen Sie den Pfad in einem breiten braunen Strich
context.StrokeStyle = '#663300';
Context.lineWidth = 20;
Context.Stroke();

// Den vorherigen Canvas-Status wiederherstellen
context.restore();

Bilder in Canvas einfügen

Sie müssen warten, bis das Bild vollständig geladen ist, bevor Sie es bearbeiten können. Browser laden Bilder normalerweise asynchron, wenn das Seitenskript ausgeführt wird. Wenn Sie versuchen, das Bild auf der Leinwand zu rendern, bevor es vollständig geladen ist, sollte auf der Leinwand kein Bild angezeigt werden .


Code kopieren
Der Code lautet wie folgt:

// Bild laden
var bark = new Image();
bark.src = "bark.jpg";

// Rufen Sie nach dem Laden des Bildes die Zeichenfunktion
bark.onload = function () {
drawTrails();
}

auf

Bild anzeigen:

//Mit Hintergrundmuster als Hintergrund des Baumstamms füllen context.drawImage(bark, -5, -50, 10, 50);

Verlauf

Die Verwendung von Farbverläufen erfordert drei Schritte:

(1) Verlaufsobjekt erstellen

(2) Legen Sie die Farbe für das Verlaufsobjekt fest und geben Sie die Übergangsmethode an

(3) Legen Sie den Verlauf für den Füllstil oder den Strichstil im Kontext fest


Kopieren Sie den Code
Der Code lautet wie folgt:

// Erstellen Sie eine Drei -dimensionale Baumstammtextur Horizontaler Farbverlauf ordnen
var trunkGradient = context.createLinearGradient(-5, -50, 5, -50);

//Der linke Rand des Stammes ist im Allgemeinen braun
trunkGradient.addColorStop(0, '#663300');

// Die Farbe des mittleren linken Teils des Rumpfes muss besprochen werden
trunkGradient.addColorStop(0.4, '#996600');

//Die Farbe am rechten Rand sollte dunkler sein
trunkGradient.addColorStop(1, '#552200');

// Füllen Sie den Stamm mit Farbverlauf
context.fillStyle = trunkGradient;
context.fillRect(-5, -50, 10, 50);
// Erstellen Sie einen vertikalen Farbverlauf zum Füllen Stamm mit dem Blätterdach Schatten auf dem Baumstamm
var canopyShadow = context.createLinearGradient(0, -50, 0, 0);
// Der Startpunkt des Projektionsgradienten ist schwarz mit einer Transparenz von 50 %
canopyShadow.addColorStop(0, ' rgba(0, 0, 0, 0.5)');
// Der Farbverlauf geht innerhalb kurzer Zeit schnell in völlig transparent über
// über diese Länge hinaus.
canopyShadow.addColorStop(0.2, 'rgba(0, 0, 0, 0.0)');

// Füllen Sie den Baumstamm mit dem Projektionsverlauf
context.fillStyle = canopyShadow;
context.fillRect(-5, -50, 10, 50);

Hintergrundbild


Code kopieren
Der Code lautet wie folgt:

// Bild laden
var Gravel = new Image();
gravel.src = "gravel.jpg";
gravel.onload = function () {
drawTrails();
}

//Ersetze die dicke braune Linie durch ein Hintergrundbild
context.StrokeStyle = context.createPattern(gravel, 'repeat');
Context.lineWidth = 20;
Context.Stroke() ;

Der zweite Parameter von context.createPattern ist ein Wiederholbarkeitsmarker, und Sie können den entsprechenden Wert in Tabelle 2-1 auswählen.

平铺方式   意义
repeat (默认值)图片会在两个方向平铺
repeat-x 横向平铺
repeat-y 纵向平铺
no-repeat 图片只显示一次,不平铺

Zoom

Skalierungsfunktion context.scale(x,y): x und y repräsentieren die Werte in der x- bzw. y-Dimension. Wenn jeder Parameter ein Bild auf der Leinwand anzeigt, wird ihm der Betrag übergeben, um den das Bild auf der Richtungsachse vergrößert (oder verkleinert) werden soll. Wenn der x-Wert 2 beträgt, bedeutet dies, dass alle Elemente im gezeichneten Bild doppelt so breit werden. Wenn der y-Wert 0,5 beträgt, wird das gezeichnete Bild halb so hoch wie zuvor.


Code kopieren
Der Code lautet wie folgt:

// Bei X=130 , Y= Zeichne den ersten Baum bei 250
context.save();
context.translate(130, 250);
drawTree(context);
context.restore();

// Zeichne den zweiten Baum bei X=260, Y=500
context.save();
context.translate(260, 500);

//Vergrößern Sie die Höhe und Breite des zweiten Baums auf das Zweifache des ursprünglichen Werts
context.scale(2, 2);
drawTree(context);
context.restore();

Drehen

Bild drehen


Code kopieren
Der Code lautet wie folgt:

context.save();
//Der Drehwinkelparameter ist im Bogenmaß angegeben
context.rotate(1.57);
context.drawImage(myImage, 0, 0, 100, 100);

context.restore();

Eine Möglichkeit, Transformation zu nutzen


Code kopieren
Der Code lautet wie folgt:

// Aktuellen Status speichern
context .save();

// Der X-Wert erhöht sich mit zunehmendem Y-Wert.
// Sie können einen geneigten Baum erstellen, der als Schatten verwendet wird.
// Nach dem Anwenden der Transformation alle Koordinaten sind Multiplizieren mit Matrix
context.transform(1, 0,
-0.5, 1,
, 0);

// Ändern Sie in Richtung der Y-Achse die Schattenhöhe auf 60 % des ursprünglichen Werts
context.scale(1, 0.6);

// Füllen Sie den Stamm mit Schwarz mit einer Transparenz von 20 %
context.fillStyle = 'rgba(0, 0, 0, 0.2)';
context.fillRect(-5, -50, 10, 50);

//Den Baum mit dem vorhandenen Schatteneffekt neu zeichnen
createCanopyPath(context);
context.fill();

//Stellen Sie den vorherigen Canvas-Status wieder her
context.restore();

Text

context.fillText(text,x,y,maxwidth): Texttextinhalt, x,y gibt die Textposition an, maxwidth ist ein optionaler Parameter, der die Textposition begrenzt.
context.StrokeText(text,x,y,maxwidth): Texttextinhalt, x,y gibt die Textposition an, maxwidth ist ein optionaler Parameter, der die Textposition begrenzt.


Code kopieren
Der Code lautet wie folgt:

// Text auf Leinwand zeichnen
context.save();

//Die Schriftgröße beträgt 60 und die Schriftart ist Impact
context.font = "60px Impact";

//Füllfarbe
context.fillStyle = '#996600';
//Center
context.textAlign = 'center';

//Text zeichnen
context.fillText('Happy Trails!', 200, 60, 400);
context.restore();

Schatten

Schatten können über mehrere globale Kontexteigenschaften gesteuert werden

属性  值  备注
shadowColor  任何CSS中的颜色值 可以使用透明度(alpha)
shadowOffsetX 像素值  值为正数,向右移动阴影;为负数,向左移动阴影
shadowOffsetY 像素值 值为正数,向下移动阴影;为负数,向上移动阴影
shadowBlur 高斯模糊值 值越大,阴影边缘越模糊


Code kopieren
Der Code lautet wie folgt:

// Farbe Schwarz, 20 % Transparenz
context.shadowColor = 'rgba(0, 0, 0, 0.2)';

// 15 Pixel nach rechts und 10 Pixel nach links verschieben
context.shadowOffsetX = 15;
context.shadowOffsetY = -10;

// Leicht verschwommener Schatten
context.shadowBlur = 2;

Pixeldaten

context.getImageData(sx, sy, sw, sh): sx, xy einen Punkt bestimmen, sw: Breite, sh: Höhe.

Diese Funktion gibt drei Attribute zurück: Breite, wie viele Pixel in jeder Zeile, Höhe, wie viele Pixel in jeder Spalte

Datengruppe von RGBA-Werten (Wert Rot, Grün, Blau und Transparenz), wobei jedes Pixel von Canvas erhalten wird.

context.putImageData(imagedata,dx,dy): Ermöglicht Entwicklern die Übergabe eines Satzes von Bilddaten, die zur Angabe des Offsets verwendet werden. Bei Verwendung springt die Funktion zur angegebenen Canvas-Position 🎜>

Zeigen Sie die eingehenden Pixeldaten an.

canvas.toDataUrl: Die aktuell auf der Leinwand angezeigten Daten können programmgesteuert abgerufen werden. Die erhaltenen Daten werden im Textformat gespeichert und der Browser kann sie in ein Bild analysieren.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles