


Zusammenfassung verschiedener Methoden zum Zeichnen von Ellipsen auf HTML5 Canvas_html5-Tutorial-Fähigkeiten
Canvas bietet in HTML5 keine direkte Methode zum Zeichnen von Ellipsen. Im Folgenden finden Sie eine Zusammenfassung mehrerer Zeichenmethoden. Jede Methode hat ihre eigenen Vor- und Nachteile, die je nach Situation ausgewählt werden sollten. Die Parameter jeder Methode sind die gleichen:
Kontext ist das 2D-Zeichenumgebungsobjekt von Canvas,
x ist die Abszisse des Ellipsenzentrums,
y ist die Ordinate des Ellipsenzentrums,
a ist die Länge der transversalen Halbachse der Ellipse,
b ist die Länge der longitudinalen Halbachse der Ellipse.
Parametrische Gleichungsmethode
Diese Methode verwendet die parametrische Gleichung der Ellipse, um die Ellipse zu zeichnen
//----------Verwenden Sie parametrische Gleichungen, um Ellipsen zu zeichnen---------- ------ -----
//Die Parameter x und y der Funktion sind der Mittelpunkt der Ellipse; a, b sind die transversale Halbachse und die Länge der vertikalen Halbachse von die Ellipse, die nicht gleichzeitig 0 sein kann
//Dies Der Nachteil der Methode besteht darin, dass, wenn linWidth breiter und die Ellipse flacher ist
//Das lange Achsenende innerhalb der Ellipse ist schärfer, nicht glatt und die Effizienz ist gering
function ParamEllipse(context, x, y, a, b)
{
//max ist gleich 1 geteilt durch den größeren der Hauptachsenwerte a und b
//i erhöht sich bei jeder Schleife um 1/max, was eine Erhöhung in Grad anzeigt
//Das funktioniert. Stellen Sie sicher, dass der in jedem Zyklus gezeichnete Pfad (Bogen) nahe bei 1 Pixel liegt
var step = (a > ; b) ? 1 / a : 1 / b;
context.beginPath();
moveTo(x a, y); i = 0; i < 2 * Math.PI; i = Schritt)
//Parametrische Gleichung ist x = a * cos(i), y = b * sin(i),
//Der Parameter ist i und gibt den Grad (Bogenmaß) an
context.lineTo(x a * Math.cos(i), y b * Math.sin(i)}
context.closePath( );
context.Stroke();
Gleichmäßige Komprimierungsmethode
Diese Methode verwendet das Prinzip der gleichmäßigen Komprimierung in der Mathematik einen Kreis in eine Ellipse umwandeln. Der folgende Code führt zu dem Problem der inkonsistenten Linienbreite. Siehe 5 für die Lösung.
Code kopieren
//Dieser Mangel ist manchmal von Vorteil, beispielsweise wenn der dreidimensionale Effekt eines Rings (Planetenhalo) ausgedrückt wird.
//Für den Fall, dass Parameter a oder b 0 ist, ist diese Methode nicht anwendbar
function EvenCompEllipse(context, x, y, a, b)
{
context.save();
//Wählen Sie den größeren von a und b als Radiusparameter der Bogenmethode aus
var r = (a > b) ? a : b;
var ratioX = a / r; //Skalierungsverhältnis der horizontalen Achse
var ratioY = b / r; //Skalierungsverhältnis der vertikalen Achse context.scale(ratioX, ratioY); //Skalierung (gleichmäßige Komprimierung)
context.beginPath();
// Zeichnen Sie gegen den Uhrzeigersinn, beginnend vom linken Endpunkt der Ellipse
context.moveTo((x a) / ratioX, y / ratioY);
context.arc(x / ratioX, y / ratioY, 0, 2 * Math. PI); );
context.restore();
Kubische Bezier-Kurve-Methode 1
Die kubische Bezier-Kurve ist eine tatsächliche Näherung Zeichnung, und es ist auch eine Annäherung in der Theorie. Aufgrund seiner hohen Effizienz wird es jedoch häufig zum Zeichnen von Ellipsen in Computervektorgrafiken verwendet, aber die spezifische Theorie ist mir nicht ganz klar. Der Grad der Annäherung liegt in der Wahl der Positionen der beiden Kontrollpunkte. Die Kontrollpunktposition dieser Methode wurde durch meine eigenen Experimente ermittelt und die Genauigkeit ist in Ordnung
Kopieren Sie den Code
Der Code lautet wie folgt:
context.translate(x, y);
context.beginPath();
//Von der Ellipsenvertikale aus beginnt das untere Ende der Achse gegen den Uhrzeigersinn zu zeichnen
context.moveTo(0, b)
context.bezierCurveTo(ox, b, a, oy, a, 0);
context.bezierCurveTo(a, -oy , ox, -b, 0, -b);
context.bezierCurveTo(-ox, -b, -a, -oy, -a, 0); >context.bezierCurveTo(-a, oy, - ox, b, 0, b);
context.close();
context.restore(); };
Kubische Bezier-Kurven-Methode 2
Diese Methode wurde von einer Antwort auf einen Beitrag in StackOverFlow geändert. Sie hat eine höhere Genauigkeit und ist auch eine Methode, die häufig zum Zeichnen von Ellipsen verwendet wird >
//, das Ende der Längsachse ist scharf und nicht glatt
//Diese Methode ist genauer als die vorherige Bezier-Methode, aber etwas weniger effizient
function BezierEllipse2(ctx, x, y, a, b)
{
var k = .5522848,
ox = a * k, // Horizontaler Kontrollpunktversatz
oy = b * k; // Vertikaler Kontrollpunktversatz Quantity
ctx.beginPath( );
//Zeichne vier kubische Bezier-Kurven im Uhrzeigersinn, beginnend vom linken Endpunkt der Ellipse
ctx.moveTo(x - a, y); x - ox, y - b, x, y - b);
ctx.bezierCurveTo(x ox, y - b, x a, y - oy, x a, y);
ctx.bezierCurveTo(x a, y oy, x ox, y b, x, y b);
ctx.bezierCurveTo(x - ox, y b, x - a, y oy, x - a, y);
ctx.closePath(); >ctx.Stroke();
};
Rastermethode
Ein Beispiel ist ein Blogbeitrag von Gartenfreund „Doudou Gou“ „HTML5 Canvas Improvement Class (1) – Raster Graphics (1) Midpoint Circle Drawing Algorithm“. Diese Methode ist relativ „originell“, bietet große Flexibilität, hohe Effizienz und hohe Genauigkeit, ist jedoch relativ kompliziert, um eine wertvolle Funktion zum Zeichnen von Ellipsen zu implementieren. Wenn sich beispielsweise die Linienbreite ändert, wird der Algorithmus komplizierter. Obwohl es sich um einen Algorithmus zum Zeichnen von Kreisen handelt, ähnelt ihm der Algorithmus zum Zeichnen von Ellipsen. Sie können ihn unten nachschlagen. Demo Im Folgenden finden Sie mehrere Demonstrationen zum Zeichnen elliptischer Funktionen zusätzlich zur Rastermethode. Der Demonstrationscode lautet wie folgt:
Code kopieren
Beachten Sie, dass für die erfolgreiche Ausführung des Codes ein Browser erforderlich ist, der HTML5 Canvas unterstützt.
Das erste Mal einen Blog zu schreiben hat einen ganzen Tag gedauert, es war nicht einfach! Die dunkle Skin-Vorlage von Blog Park wird für den eingefügten Code nicht gut angezeigt. Ich habe mir große Mühe gegeben, das Codeformat herauszufinden!

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 Schulen, die Leinwand verwenden, gehören die Stanford University, das MIT, die Columbia University, die University of California, Berkeley usw. Ausführliche Einführung: 1. Die Stanford University nutzt Canvas als ihre wichtigste Online-Lernplattform. Lehrer und Studenten der Stanford University nutzen Canvas, um Kursinhalte zu verwalten und zu kommunizieren und durch Funktionen wie Online-Diskussionen, Abgabe von Aufgaben und Prüfungen zu lernen Das Polytechnic Institute und das MIT nutzen Canvas ebenfalls als Online-Lernmanagementsystem und führen die Kursverwaltung über die Canvas-Plattform durch. 3. Columbia University usw.

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
