Я пытаюсь создать базовую программу рисования на javascript.
Я добавил инструменты для рисования прямоугольников, линий и от руки.Теперь мне нужно добавить инструмент для рисования круга.Я нашел код для рисования круга, но я не знаю, как его реализовать и изменить, чтобы он соответствовал уже имеющемуся у меня коду.
Код для рисования инструмента линии выглядит следующим образом
tools.line = function () {
var tool = this;
this.started = false;
this.mousedown = function (ev) {
tool.started = true;
tool.x0 = ev._x;
tool.y0 = ev._y;
};
this.mousemove = function (ev) {
if (!tool.started) {
return;
}
context.clearRect(0, 0, canvas.width, canvas.height);
context.beginPath();
context.moveTo(tool.x0, tool.y0);
context.lineTo(ev._x, ev._y);
context.stroke();
context.closePath();
};
this.mouseup = function (ev) {
if (tool.started) {
tool.mousemove(ev);
tool.started = false;
img_update();
}
};
};
Я пытался создать инструмент, который рисует круг, используя метод arc, основываясь на этом коде:
context.beginPath();
context.arc(X, Y, R, 0, 2 * Math.PI, false);
context.lineWidth = 3;
context.strokeStyle = '#FF0000';
context.stroke();
Я пытался сделать что-то подобное.Возможно, излишне говорить, что никакого рабочего результата нет вообще.
tools.circle = function () {
var tool = this;
this.started = false;
this.mousedown = function (ev) {
tool.started = true;
tool.x0 = ev._x;
tool.y0 = ev._y;
};
this.mousemove = function (ev) {
if (!tool.started) {
return;
}
context.clearRect(0, 0, canvas.width, canvas.height);
var x = (mouse.x + start_mouse.x) / 2;
var y = (mouse.y + start_mouse.y) / 2;
var radius = Math.max(
Math.abs(mouse.x - start_mouse.x),
Math.abs(mouse.y - start_mouse.y)
) / 2;
context.beginPath();
context.arc(x, y, radius, 0, Math.PI*2, false);
context.stroke();
context.closePath();
};
this.mouseup = function (ev) {
if (tool.started) {
tool.mousemove(ev);
tool.started = false;
img_update();
}
};
};
Весь код можно увидеть здесь Pastebin