J'ai besoin de savoir comment dessiner des polygones sur une toile. Sans utiliser jQuery ou quelque chose comme ça.
javascript
css
html
canvas
CyanPrime
la source
la source
Réponses:
Créez un chemin avec
moveTo
etlineTo
( démo en direct ):la source
depuis http://www.scienceprimer.com/drawing-regular-polygons-javascript-canvas :
Le code suivant dessinera un hexagone. Modifiez le nombre de côtés pour créer différents polygones réguliers.
la source
cxt.save();
cxt.fillStyle = "#FF000";
cxt.fill();
cxt.restore();
vous pouvez remplir la forme.var angle = i * 2 * Math.PI / shape.currentSides + rotation
ajouté aux valeurs cos et sin a fonctionné pour moi ... merci encoresin
et lescos
appels et les changementsYcenter +
àYcenter -
des deux endroits ( en laissant comme une somme plutôt qu'une différence des valeurs le fait commencer par un point au bas de la forme résultante). Je ne suis pas un homme intelligent quand il s'agit de trig, alors prenez avec un grain de sel; mais cela a réalisé ce que je voulais au moins.la source
for
méthode JavaScript vanilla . Cette seule ligne de code a tellement simplifié les choses. J'utilise généralement jQuery.each()
mais son application est beaucoup moins polyvalente.var
, dans le code ci-dessus, d'item
un espace de noms global polluant. Tout est sur une seule ligne, ce qui réduit la lisibilité. Si vous ne vous souciez pas de la lisibilité, vous pouvez également supprimer les accolades.la source
Voici une fonction qui prend même en charge le dessin dans le sens horaire / anti-horaire pour contrôler les remplissages avec la règle d'enroulement non nulle.
Voici un article complet sur son fonctionnement et plus encore.
la source
Vous pouvez utiliser la méthode lineTo () de la même manière que: var objctx = canvas.getContext ('2d');
si vous ne voulez pas remplir le polygone, utilisez la méthode stroke () à la place de fill ()
Vous pouvez également vérifier les éléments suivants: http://www.authorcode.com/draw-and-fill-a-polygon-and-triangle-in-html5/
Merci
la source
En plus de @canvastag, utilisez une
while
boucle avecshift
je pense que c'est plus concis:la source
Pour créer un simple hexagone sans avoir besoin d'une boucle, utilisez simplement la fonction beginPath (). Assurez-vous que votre canvas.getContext ('2d') est égal à ctx sinon cela ne fonctionnera pas.
J'aime aussi ajouter une variable appelée times que je peux utiliser pour mettre à l'échelle l'objet si nécessaire, ce dont je n'ai pas besoin pour changer chaque nombre.
la source
Pour les personnes recherchant des polygones réguliers:
Utilisation:
la source