Preciso saber desenhar polígonos em uma tela. Sem usar jQuery ou algo parecido.
javascript
css
html
canvas
CyanPrime
fonte
fonte
Respostas:
Crie um caminho com
moveTo
elineTo
( demonstração ao vivo ):fonte
fonte
for
método JavaScript vanilla . Essa única linha de código simplificou muito as coisas. Normalmente uso o jQuery,.each()
mas seu aplicativo é muito menos versátil.var
, no código acimaitem
está poluindo o namespace global. Tudo está em uma linha, o que reduz a legibilidade. Se você não se preocupa com a legibilidade, pode também remover as chaves.de http://www.scienceprimer.com/drawing-regular-polygons-javascript-canvas :
O código a seguir desenhará um hexágono. Altere o número de lados para criar diferentes polígonos regulares.
fonte
cxt.save();
cxt.fillStyle = "#FF000";
cxt.fill();
cxt.restore();
Você pode preencher a forma.var angle = i * 2 * Math.PI / shape.currentSides + rotation
adicionado aos valores de cos e sin funcionou para mim ... obrigado novamentesin
ecos
chama e mudeYcenter +
paraYcenter -
em ambos os lugares (deixando como uma soma em vez de uma diferença de valores resulta em começar com um ponto na parte inferior da forma resultante). Não sou um homem inteligente quando se trata de trigonometria, então aceite com cautela; mas isso atingiu o que eu queria, pelo menos.fonte
Aqui está uma função que suporta até mesmo o desenho no sentido horário / anti-horário que você controla os preenchimentos com a regra de contorno diferente de zero.
Aqui está um artigo completo sobre como funciona e muito mais.
fonte
Você pode usar o método lineTo () igual a: var objctx = canvas.getContext ('2d');
se você não quiser preencher o polígono, use o método stroke () no lugar do fill ()
Você também pode verificar o seguinte: http://www.authorcode.com/draw-and-fill-a-polygon-and-triangle-in-html5/
obrigado
fonte
Além de @canvastag, use um
while
loop comshift
acho que é mais conciso:fonte
Para fazer um hexágono simples sem a necessidade de um loop, basta usar a função beginPath (). Certifique-se de que seu canvas.getContext ('2d') seja igual a ctx, caso contrário, não funcionará.
Também gosto de adicionar uma variável chamada times que posso usar para dimensionar o objeto se precisar. Isso é o que não preciso alterar cada número.
fonte
Para as pessoas que procuram polígonos regulares:
Usar:
fonte