Heim  >  Artikel  >  Web-Frontend  >  HTML5-Canvas-Zeichnungs-Tutorial (7) – quadraticCurveTo-Methode zum Zeichnen von Kurven in Canvas_HTML5-Tutorial-Fähigkeiten

HTML5-Canvas-Zeichnungs-Tutorial (7) – quadraticCurveTo-Methode zum Zeichnen von Kurven in Canvas_HTML5-Tutorial-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:50:111411Durchsuche

Wir sprechen weiterhin über die Methode zum Zeichnen von Kurven auf der Leinwand und sprechen heute über quadraticCurveTo.
Um ehrlich zu sein, ist diese Methode etwas beängstigend. Sie können sie zum ersten Mal allein anhand des Funktionsnamens erleben. Ich halte es übrigens für notwendig, den Namen dieser Funktion zu kürzen.
Quadratisch bedeutet quadratisch, was der quadratische Grad der quadratischen Gleichung in der Mathematik ist. Die Parameter von ctx.quadraticCurveTo lauten wie folgt:

Kopieren Sie den Code
Der Code lautet wie folgt:

ctx .quadraticCurveTo(x1,y1,x,y);

wobei x,y die Koordinaten des Endpunkts und x1,y1 die Koordinaten der Kurvensteuerung sind Punkt? Was? Sie fragen mich, wo der Ausgangspunkt ist? Der Startpunkt wird zuvor mit moveTo bestimmt.
Der Grund, warum ich die Koordinaten der Kontrollpunkte mit der Seriennummer 1 versehen habe, liegt darin, dass eine Funktion zum Zeichnen einer Kurve, die später erwähnt wird, zwei Kontrollpunkte hat, nämlich x2 und y2, daher hier eine Vorsichtsaufnahme.
Der durch moveTo bestimmte Startpunkt und der durch quadraticCurveTo selbst bestimmte Endpunkt können zu einer geraden Linie verbunden werden. Da quadraticCurveTo nur einen Kontrollpunkt hat, liegt dieser Kontrollpunkt entweder auf der linken Seite der geraden Linie oder auf der rechten Seite Daher kann quadraticCurveTo nur Bögen zeichnen, jedoch keine S-Form.

Um das Verständnis zu erleichtern, verwende ich immer noch die Methode des Zeichnens von Hilfslinien im vorherigen Artikel. Der vorläufige Code lautet wie folgt:

Code kopieren
Der Code lautet wie folgt:

var x1=350,
y1 = 250,
x = 400,
y = 500;
ctx.StrokeStyle="#000"; >ctx.moveTo(300,300 ); //Startpunkt
ctx.quadraticCurveTo(x1,y1,x,y); //Echte Kurve
ctx.beginPath();
ctx.strokeStyle = "rgba(255,0,0,0.5)";
ctx.moveTo(300,300);
ctx.lineTo(x1,y1);//Diese Zeile und die nächste Zeile sind Linien zum Zeichnen von Kontrollpunkten
ctx.lineTo(x,y);
ctx.moveTo(300,300);//Beginne, den Startpunkt und den Endpunkt der Kurve zu verbinden
ctx.lineTo(x, y);
ctx.Stroke();


Hier habe ich zwei Hilfslinien gezeichnet, eine ist die Verbindungslinie zwischen dem Startpunkt und dem Endpunkt und die andere ist die Hilfslinie vom Startpunkt zum Kontrollpunkt und dann zum Endpunkt (eigentlich zwei). Der Schnittpunkt dieser beiden Linien ist quadratischCurveZu Kontrollpunktkoordinaten.


quadraticCurveTo kann nur bogenförmige Kurven zeichnen, dieser Bogen kann jedoch sehr unregelmäßig sein, was eine Verbesserung im Vergleich zu arc und arcTo darstellt.
Außerdem wird quadraticCurveTo nicht wie arcTo umgekehrt.
Wenn Sie den Kontrollpunkt sehr weit verschieben, kann es natürlich sein, dass Ihnen die Grafiken ungewohnt vorkommen. Probieren wir es aus:
„y1 = 950;
“ Ich habe y1 einfach etwas größer verändert, und dann ging die Kurve über den Rahmen der Leinwand hinaus.


Der Bereich der von quadraticCurveTo gezeichneten Kurve kann jedoch niemals die Koordinaten der Kontrollpunkte erreichen oder überschreiten. Solange wir die Kontrollpunkte „kontrollieren“, müssen wir uns keine Sorgen machen.
Ich habe eine einfache bewegliche Beispielseite geschrieben, um den Prozess des Zeichnens von Kurven mit quadraticCurveTo zu zeigen. Ich hoffe, dass sie Ihnen helfen kann, Ihr Verständnis zu vertiefen:



Tipp: Sie können einen Teil des Codes ändern, bevor Sie ihn ausführen
Bitte verzeihen Sie mir, wenn der Code hässlich ist.
Stellungnahme:
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