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:
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:
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: