Мне нужно знать, как рисовать многоугольники на холсте. Без использования jQuery или чего-то подобного.
javascript
css
html
canvas
CyanPrime
источник
источник
Ответы:
Создайте путь с помощью
moveTo
иlineTo
( живая демонстрация ):источник
из http://www.scienceprimer.com/drawing-regular-polygons-javascript-canvas :
Следующий код нарисует шестиугольник. Измените количество сторон, чтобы создать разные правильные многоугольники.
источник
cxt.save();
cxt.fillStyle = "#FF000";
cxt.fill();
cxt.restore();
вы можете заполнить форму.var angle = i * 2 * Math.PI / shape.currentSides + rotation
добавление к значениям cos и sin у меня сработало ... еще раз спасибоsin
иcos
вызовы и измененияYcenter +
вYcenter -
обеих местах (оставляя его в виде суммы , а не разности значений приводит к тому, что он начинается с точки внизу получившейся формы). Я не умный человек, когда дело касается триггеров, так что относитесь к этому с недоверием; но это достигло того, чего я хотел по крайней мере.источник
for
метод JavaScript . Эта одна строка кода сильно упростила ситуацию. Обычно я использую jQuery,.each()
но его приложение гораздо менее универсально.var
в приведенном выше кодеitem
загрязняют глобальное пространство имен. Все в одной строке, что снижает удобочитаемость. Если вас не волнует удобочитаемость, вы можете также удалить фигурные скобки.источник
Вот функция, которая даже поддерживает рисование по часовой стрелке / против часовой стрелки, если вы контролируете заливку с помощью правила ненулевой обмотки.
Вот полная статья о том, как это работает, и многое другое.
источник
Вы можете использовать метод lineTo () так же, как: var objctx = canvas.getContext ('2d');
если вы не хотите заполнять многоугольник, используйте метод stroke () вместо fill ()
Вы также можете проверить следующее: http://www.authorcode.com/draw-and-fill-a-polygon-and-triangle-in-html5/
Спасибо
источник
В дополнение к @canvastag используйте
while
цикл с,shift
я думаю, более кратким:источник
Чтобы сделать простой шестиугольник без цикла, просто используйте функцию beginPath (). Убедитесь, что ваш canvas.getContext ('2d') равен ctx если нет, это не сработает.
Мне также нравится добавлять переменную с именем times, которую я могу использовать для масштабирования объекта, если мне нужно. Это то, что мне не нужно менять каждое число.
источник
Для тех, кто ищет правильные многоугольники:
Использование:
источник