Я смотрел на google и был интересный tutorial/code, который рисует правильный многоугольник с n-сторонами размером &. Поэтому я подумал о том, чтобы сделать из нее какую-то функцию. Одна из технических проблем, с которыми я столкнулась, заключается в том, что когда холст рисуется, и я нажимаю, чтобы нарисовать еще один холст, второй холст «перезаписан» на первом. К счастью, кто-то here решил эту проблему, очистив холст.
Так вот мой код, вы можете изменить его для своих нужд:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Regular Polygon</title>
</head>
<body>
<canvas id="regular_polygon" width="400" height="400"></canvas>
<p>Polygon drawer:</p>
<p>Number of sides <input type="text" id="nSides"></p>
<p>Size <input type="text" id="size"></p>
<p>Color <input type="text" id="color"></p>
<p>Width <input type="text" id="width"></p>
<button id="draw">Draw!</button>
<script type="text/javascript">
function polygon (element_id, nSides, psize, pcolor, pwidth) {
var c = document.getElementById(element_id);
c.width = c.width;
var cxt = c.getContext("2d");
var numberOfSides = nSides,
size = psize,
Xcenter = c.width/2,
Ycenter = c.height/2;
cxt.beginPath();
cxt.moveTo (Xcenter + size * Math.cos(0), Ycenter + size * Math.sin(0));
for (var i = 1; i <= numberOfSides;i += 1) {
cxt.lineTo (
Xcenter + size * Math.cos(i * 2 * Math.PI/numberOfSides),
Ycenter + size * Math.sin(i * 2 * Math.PI/numberOfSides)
);
}
cxt.strokeStyle = pcolor;
cxt.lineWidth = pwidth;
cxt.stroke();
}
(function() {
polygon("regular_polygon", 3, 40, "#000000", 2);
document.querySelector('#draw').addEventListener('click', function (e) {
e.preventDefault();
var nSides = document.querySelector('#nSides'),
size = document.querySelector('#size'),
color = document.querySelector('#color'),
width = document.querySelector('#width');
polygon("regular_polygon", nSides.value, size.value, color.value, width.value);
});
})();
</script>
</body>
</html>
Глядя на демо, то есть именно то, что я ищу! Спасибо за такой быстрый ответ. Я попробую это завтра, когда я получу на своем компьютере – CampSoup1988
@ CampSoup1988 Нет проблем. Рад, что смог помочь. –