


html5 Canvas-Zeichen-Tutorial (2) – Zeichnen von geraden Linien und Festlegen von Linienstilen wie Farbe/Endpunkt/Schnittpunkt_html5-Tutorial-Fähigkeiten
Wenn Sie immer noch nicht wissen, was Canvas ist, können Sie den vorherigen Artikel lesen Beim Zeichnenlernen sind Linien am grundlegendsten, und durch die Verbindung von Linien können beliebige Grafiken entstehen. Dasselbe gilt auch für Canvas.
Bevor wir beginnen, nehmen wir die Leinwand und die Pinsel heraus:
var ctx = cvs.getContext('2d'); // Brush
Aber es hat keinen Sinn, herumzuhängen, wir müssen mit dem Zeichnen beginnen. Zeichnen wir zuerst die einfachste: eine gerade Linie.
Die Methode zum Zeichnen einer geraden Linie ist lineTo. Ihre Parameter sind die gleichen wie moveTo, was ein Punkt ist.
ctx.lineTo(x,y) Wenn Sie eine Linie zeichnen, bewegt sich natürlich auch der Schreibpunkt, sodass der Schreibpunkt nach lineTo zum Zielpunkt wird.
ctx.lineTo(200,100);
Schüler, die PS verwendet haben, kennen auf jeden Fall die beiden Grafikmodi: Füllen und Strich. Nachdem wir nun eine Linie gezeichnet haben, entspricht dies dem Zeichnen eines Pfads in PS. Zu diesem Zeitpunkt können wir den Rand des Pfads zeichnen und die Grafiken werden angezeigt.
Die Canvas-Strichmethode ist Stroke(). Vervollständigen wir nun den Code:
ctx.lineTo(200,100);
ctx.lineTo(200,100);
ctx.lineTo(100,100); ;
ctx.Stroke();
Hier zeichnen wir zuerst den gesamten Pfad und streichen ihn dann auf einmal.
——–Beschwerde des Autors: Ein Nachteil des Canvas-Zeichnens besteht darin, dass es im Wesentlichen auf Vermutungen basiert, was sehr unintuitiv ist.
Aus der obigen Grafik können wir ersehen, dass die Standardlinienstärke 1 Pixel beträgt und die Linienfarbe Schwarz ist. Natürlich können wir sie festlegen, aber das Seltsame ist, dass das Festlegen der Linienbreite lineWidth ist, das Festlegen des Linienstils jedoch StrokeStyle. Ich weiß es auch nicht. :
Der obige Code legt die Linienbreite auf 10 Pixel und die Linienfarbe auf durchscheinendes Rot fest.
Frage: Wenn der rechteckige Pfad, den ich zeichne, eine Breite und Höhe von 100 hat und meine Seitenlinienbreite 10 Pixel beträgt, wie groß ist dann die Gesamtbreite und -höhe des Rechtecks mit den gezeichneten Seiten? Ist es 100 10*2=120?
Wenn die Kante vollständig außerhalb des Pfads gezeichnet wird, beträgt sie 120. Aber Canvas ist es nicht. Alle Linien in Canvas haben eine „Mittellinie“, die sich in der absoluten Mitte der Linie befindet. Die Striche der Linie erstrecken sich von der Mittellinie zu beiden Seiten. Wenn Ihre Linienbreite beispielsweise 1 beträgt, liegt die Mittellinie bei 0,5. Wenn die Breite 5 beträgt, liegt die Mittellinie bei 2,5. Beim Streichen der Leinwandgrafiken wird der Pfad an der Mittellinie der Linie ausgerichtet und dann gestrichen. Wie in Abbildung 2 dargestellt:
Beim Nachzeichnen befindet sich also die Hälfte der Linie außen und die Hälfte innen. Das heißt, die Gesamtbreite des obigen Rechtecks beträgt 100 (10/2)*2, was 110 entspricht.
Aus diesem Grund sind die Ecken oben links abgesplittert. Weil hier niemand malt.
Aber warum sind die restlichen Ecken nicht eingekerbt? Sieht es nicht so aus, als gäbe es in allen vier Ecken Ihres Bildes Lücken?
Das liegt daran, dass ich den Pinsel beim Zeichnen der Linie nicht „angehoben“ habe. Der Pinsel war durchgehend, das heißt, es gab kein moveTo. Wenn Sie es nicht glauben, gehen wir jetzt weiter:
ctx.lineTo(200,100);
ctx.moveTo(200,100); //Achtung hier
ctx.lineTo(200,200); 🎜>ctx.lineTo(100,200);
ctx.lineTo(100,100);
ctx.lineWidth = 10;
ctx.StrokeStyle = 'rgba(255,0,0,0.5)'; >ctx.Stroke();
Wir haben uns vor dem Zeichnen der zweiten Linie bewegt und die Koordinaten von moveTo haben sich nicht geändert. Es war immer noch derselbe Punkt, aber nach dem Aktualisieren sah das Diagramm so aus [. Bild 3]:
Verstanden? Weil wir den Stift erhoben haben. Jetzt löschen wir moveTo und machen uns keine Gedanken mehr darüber, wie wir die fehlende Ecke in der oberen linken Ecke füllen können.
Falsch! Dadurch fällt nur der letzte Punkt des Pfades mit dem Startpunkt zusammen, der Pfad selbst ist jedoch nicht geschlossen!
Wie schließe ich den Pfad in Canvas? Verwenden Sie closePath().
ctx.closePath( );//Geschlossener Pfad
ctx.lineWidth = 10;
ctx.StrokeStyle = 'rgba(255,0,0,0.5)';
ctx.Stroke(); >
Aktualisieren Sie es zu diesem Zeitpunkt und es wird ein perfektes Quadrat sein. Abbildung 4:
Egal wie dick wir die Linien machen – je dicker die Linien, desto mehr Leute mögen sie, oder? ————Die vier Ecken dieses Quadrats sind regelmäßige rechte Winkel und werden nicht abgerundet. Was ist mit den abgerundeten Ecken? Schauen Sie sich bitte den quadratischen Strich in PS an, Abbildung 5:
Wie Sie sehen können, ist der Bogen seiner Ecken umso größer, je dicker die Kante ist.
Wenn ich möchte, dass die Kanten in Canvas mit denen in PS übereinstimmen, gibt es eine Möglichkeit? Natürlich ist es das lineJoin-Attribut.
lineJoin, was den Schnittpunkt von Linien bedeutet, hat drei Attribute: Mitre (Standard, scharfe Ecke), Bevel (Bevel), Round (abgerundete Ecke), wie in Abbildung 6 gezeigt:

Dort Zweifellos können wir sofort verstehen, dass unser Rechteck scharfe Ecken hat. Versuchen Sie also, es in abgerundete Ecken umzuwandeln:
Die Grafik sieht so aus, Abbildung 7:

Ein bisschen wie PS , Rechts?
Außerdem wissen wir aus dem vorherigen Bild, dass die Enden der Canvas-Linien flach sind. Kann das geändert werden? Schließlich ist es flach und sieht nicht gut aus.
ist ebenfalls möglich, also das lineCap-Attribut, das den Endpunkt der Linie definiert. lineCap hat 3 Werte: butt (flach, Standard), rund (Kreis), quadratisch (Quadrat), wie in Abbildung 8 gezeigt

Sie können anhand des Bildes herausfinden, dass es sich tatsächlich um einen flachen Kopf handelt und der quadratische Kopf sind gleich. Der einzige Unterschied besteht darin, dass der flache Kopf nicht so stark hervorsteht. Sowohl der runde Kopf als auch der quadratische Kopf ragen eine Weile heraus. Wie lang ist dieser Abschnitt? Das ist die halbe Breite der Linie.
Haben Sie an etwas gedacht? Haha, für das vorherige Problem mit geschlossenen Pfaden ist der Effekt derselbe, wenn wir lineCap auf einen quadratischen Kopf setzen!
Aber aus Sicherheitsgründen müssen wir den Weg trotzdem sperren, denken Sie daran!
Ich möchte Sie auch daran erinnern: Ein geschlossener Pfad hat keine Endpunkte! Daher ist der Endpunktstil auf einem geschlossenen Pfad nicht sichtbar.
Außerdem: lineCap ist lineJoin etwas ähnlich, achten Sie darauf, sie nicht zu verwechseln.
Wenn Sie ein scharfes Auge haben und Pech haben, stellen Sie möglicherweise fest, dass die 1-Pixel-Linie manchmal nicht 1 Pixel breit ist, sondern breiter und verschwommen erscheint. Wie in Abbildung 9 gezeigt:

Herzlichen Glückwunsch! Sie sind auf einen Fehler gestoßen, der kein Fehler ist. Das ist etwas ganz Besonderes. Darüber werde ich im nächsten Artikel sprechen.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Zu den Canvas-Pfeil-Plugins gehören: 1. Fabric.js, das über eine einfache und benutzerfreundliche API verfügt und benutzerdefinierte Pfeileffekte erstellen kann. 2. Konva.js, das die Funktion zum Zeichnen von Pfeilen bietet und verschiedene Pfeile erstellen kann 3. Pixi.js, das umfangreiche Grafikverarbeitungsfunktionen bietet und verschiedene Pfeileffekte erzielen kann; 4. Two.js, das auf einfache Weise Pfeilstile und Animationen erstellen und steuern kann; 6. Grobe .js, Sie können handgezeichnete Pfeile usw. erstellen.

Zu den Details der Leinwanduhr gehören das Aussehen der Uhr, Teilstriche, Digitaluhr, Stunden-, Minuten- und Sekundenzeiger, Mittelpunkt, Animationseffekte, andere Stile usw. Ausführliche Einführung: 1. Erscheinungsbild der Uhr: Sie können mit Canvas ein kreisförmiges Zifferblatt als Erscheinungsbild der Uhr zeichnen und die Größe, Farbe, den Rand und andere Stile des Zifferblatts festlegen. 2. Skalenlinien: Zeichnen Sie Skalenlinien ein 3. Digitaluhr: Sie können eine Digitaluhr auf das Zifferblatt zeichnen, um die aktuelle Stunde und Minute anzuzeigen.

Zu den Versionen von html2canvas gehören html2canvas v0.x, html2canvas v1.x usw. Detaillierte Einführung: 1. html2canvas v0.x, eine frühe Version von html2canvas. Die neueste stabile Version ist v0.5.0-alpha1. Es handelt sich um eine ausgereifte Version, die in vielen Projekten weit verbreitet und verifiziert wurde. 2. html2canvas v1.x, dies ist eine neue Version von html2canvas.

Entdecken Sie das Canvas-Framework: Um die häufig verwendeten Canvas-Frameworks zu verstehen, sind spezifische Codebeispiele erforderlich. Einführung: Canvas ist eine in HTML5 bereitgestellte Zeichen-API, mit der wir umfangreiche Grafik- und Animationseffekte erzielen können. Um die Effizienz und den Komfort des Zeichnens zu verbessern, haben viele Entwickler verschiedene Canvas-Frameworks entwickelt. In diesem Artikel werden einige häufig verwendete Canvas-Frameworks vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein tieferes Verständnis für die Verwendung dieser Frameworks zu vermitteln. 1. EaselJS-Framework Ea

Für die Verwendung von Canvas zum Zeichnen von Diagrammen und Animationseffekten in Uniapp sind bestimmte Codebeispiele erforderlich. 1. Einführung Mit der Beliebtheit mobiler Geräte müssen immer mehr Anwendungen verschiedene Diagramme und Animationseffekte auf dem mobilen Endgerät anzeigen. Als plattformübergreifendes Entwicklungsframework auf Basis von Vue.js bietet uniapp die Möglichkeit, Canvas zum Zeichnen von Diagrammen und Animationseffekten zu verwenden. In diesem Artikel wird vorgestellt, wie Uniapp Canvas verwendet, um Diagramm- und Animationseffekte zu erzielen, und es werden spezifische Codebeispiele gegeben. 2. Leinwand

Zu den Tkinter-Canvas-Attributen gehören BG, BD, Relief, Breite, Höhe, Cursor, Highlightbackground, Highlightcolor, Highlightthickness, Insertbackground, Insertwidth, Selectbackground, Selectforeground, XScrollcommand-Attribute usw. Ausführliche Einführung

Verstehen Sie die Leistungsfähigkeit und Anwendung von Canvas in der Spieleentwicklung. Überblick: Mit der rasanten Entwicklung der Internettechnologie werden Webspiele bei Spielern immer beliebter. Als wichtiger Bestandteil der Webspielentwicklung hat sich die Canvas-Technologie nach und nach in der Spieleentwicklung durchgesetzt und ihre leistungsstarke Leistungsfähigkeit und Anwendung unter Beweis gestellt. In diesem Artikel wird das Potenzial von Canvas in der Spieleentwicklung vorgestellt und seine Anwendung anhand spezifischer Codebeispiele demonstriert. 1. Einführung in die Canvas-Technologie Canvas ist ein neues Element in HTML5, das uns die Verwendung ermöglicht

So erhalten Sie Mauskoordinaten für die Leinwand: 1. Erstellen Sie eine JavaScript-Beispieldatei. 2. Rufen Sie einen Verweis auf das Canvas-Element ab und fügen Sie einen Listener für Mausbewegungsereignisse hinzu. 3. Wenn sich die Maus auf der Leinwand bewegt, wird die Funktion getMousePos ausgelöst ; 4. Verwenden Sie die Methode „getBoundingClientRect()“, um die Positions- und Größeninformationen des Canvas-Elements sowie die Mauskoordinaten über event.clientX und event.clientY abzurufen.
