Ich muss wissen, wie man Polygone auf eine Leinwand zeichnet. Ohne jQuery oder ähnliches zu verwenden.
javascript
css
html
canvas
CyanPrime
quelle
quelle
Antworten:
Erstellen Sie einen Pfad mit
moveTo
undlineTo
( Live-Demo ):quelle
quelle
for
Methode grundlegend verstehen . Diese eine Codezeile hat die Dinge so sehr vereinfacht. Normalerweise verwende ich jQuery,.each()
aber die Anwendung ist viel weniger vielseitig.var
, im obigen Codeitem
wird der globale Namespace verschmutzt. Alles ist in einer Zeile, was die Lesbarkeit verringert. Wenn Sie sich nicht um die Lesbarkeit kümmern, können Sie auch die geschweiften Klammern entfernen.von http://www.scienceprimer.com/drawing-regular-polygons-javascript-canvas :
Der folgende Code zeichnet ein Sechseck. Ändern Sie die Anzahl der Seiten, um verschiedene reguläre Polygone zu erstellen.
quelle
cxt.save();
cxt.fillStyle = "#FF000";
cxt.fill();
cxt.restore();
Sie können die Form füllen.var angle = i * 2 * Math.PI / shape.currentSides + rotation
zu den cos und sin Werten hinzugefügt hat für mich gearbeitet ... nochmalssin
undcos
ruft auf und wechseln SieYcenter +
zuYcenter -
beiden Stellen (wobei Sie es als Summe und nicht als Differenz der Werte belassen) führt dazu, dass es mit einem Punkt am unteren Rand der resultierenden Form beginnt). Ich bin kein kluger Mann, wenn es um Trigger geht, also nimm ein Körnchen Salz; aber das hat erreicht, was ich zumindest wollte.quelle
Hier ist eine Funktion, die sogar das Zeichnen im Uhrzeigersinn / gegen den Uhrzeigersinn unterstützt. Sie steuern Füllungen mit der Wicklungsregel ungleich Null.
Hier ist ein vollständiger Artikel darüber, wie es funktioniert und mehr.
quelle
Sie können die lineTo () -Methode wie folgt verwenden: var objctx = canvas.getContext ('2d');
Wenn Sie das Polygon nicht füllen möchten, verwenden Sie die Stroke () -Methode anstelle von fill ().
Sie können auch Folgendes überprüfen: http://www.authorcode.com/draw-and-fill-a-polygon-and-triangle-in-html5/
Vielen Dank
quelle
Verwenden Sie zusätzlich zu @canvastag eine
while
Schleife, dieshift
meiner Meinung nach prägnanter ist:quelle
Verwenden Sie einfach die Funktion beginPath (), um ein einfaches Sechseck ohne Schleife zu erstellen. Stellen Sie sicher, dass Ihr canvas.getContext ('2d') gleich ctx ist, wenn dies nicht der Fall ist .
Ich möchte auch eine Variable namens times hinzufügen, mit der ich das Objekt bei Bedarf skalieren kann. Dies ist, was ich nicht brauche, um jede Zahl zu ändern.
quelle
Für die Leute, die nach regulären Polygonen suchen:
Verwenden:
quelle