Necesito saber cómo dibujar polígonos en un lienzo. Sin usar jQuery ni nada de eso.
javascript
css
html
canvas
CyanPrime
fuente
fuente
Respuestas:
Cree una ruta con
moveTo
ylineTo
( demostración en vivo ):fuente
fuente
for
método vanilla de JavaScript . Esa línea de código simplificó mucho las cosas. Normalmente uso jQuery.each()
pero su aplicación es mucho menos versátil.var
, en el código anterioritem
hay una contaminación del espacio de nombres global. Todo está en una línea, lo que reduce la legibilidad. Si no le importa la legibilidad, también puede eliminar las llaves.de http://www.scienceprimer.com/drawing-regular-polygons-javascript-canvas :
El siguiente código dibujará un hexágono. Cambia el número de lados para crear diferentes polígonos regulares.
fuente
cxt.save();
cxt.fillStyle = "#FF000";
cxt.fill();
cxt.restore();
Puede rellenar la forma.var angle = i * 2 * Math.PI / shape.currentSides + rotation
agregado a los valores de cos y pecado funcionó para mí ... gracias de nuevosin
ycos
las llamadas y el cambioYcenter +
aYcenter -
en ambos lugares (dejándola como una suma más que una diferencia de los valores da como resultado que comience con un punto en la parte inferior de la forma resultante). No soy un hombre inteligente cuando se trata de trigonometría, así que tómelo con un grano de sal; pero esto logró al menos lo que quería.fuente
Aquí hay una función que incluso admite el dibujo en sentido horario / antihorario que controla los rellenos con la regla de bobinado distinto de cero.
Aquí hay un artículo completo sobre cómo funciona y más.
fuente
Puede utilizar el método lineTo () igual que: var objctx = canvas.getContext ('2d');
si no desea llenar el polígono, use el método stroke () en lugar de fill ()
También puede comprobar lo siguiente: http://www.authorcode.com/draw-and-fill-a-polygon-and-triangle-in-html5/
Gracias
fuente
Además de @canvastag, use un
while
bucle conshift
creo que es más conciso:fuente
Para hacer un hexágono simple sin la necesidad de un bucle, simplemente use la función beginPath (). Asegúrese de que su canvas.getContext ('2d') sea igual a ctx si no, no funcionará.
También me gusta agregar una variable llamada tiempos que puedo usar para escalar el objeto si lo necesito. Esto es lo que no necesito para cambiar cada número.
fuente
Para las personas que buscan polígonos regulares:
Utilizar:
fuente