Как рисовать линии HTML5 Canvas с учетом введенных пользователем точек X, Y? - PullRequest
5 голосов
/ 05 декабря 2011

Я пытаюсь построить план этажа в Canvas. В настоящее время у меня есть сетка на холсте, и пользователи могут рисовать линии, щелкая и перетаскивая их мышью. Но это не гарантирует прямых линий.

Можно ли в любом случае предоставить пользователям поля ввода на html-странице, чтобы пользователи могли вводить начальную и конечную координаты x и y линий и обновлять их в своем коде холста? Я начинающий, когда дело доходит до JS / AJAX, поэтому любая помощь в исправлении приветствуется:)

Прямо сейчас, это раздел, который определяет, как нарисованы линии:

$(document).ready(function() {

    var canvas = document.getElementById('canvas');
    var context = canvas.getContext("2d");

    if(canvas.getContext) {
        $('#canvas').mousedown(function (evt) {
            var offset = $('#canvas').offset();
            context.beginPath();
            context.moveTo(20, 20);
        });

        $(document).mousemove(function(evt) {
            var offset = $('#canvas').offset();
            context.lineTo(evt.pageX - offset.left, evt.pageY - offset.top);
            context.stroke();
        }).mouseup(function() {
            $(document).unbind('mousemove');
            $(document).unbind('mouseup');
        });

        $('#clearcanvas').click(function () {
          context.clearRect(0, 0, 600, 580);    
        });
    }
}); 

Я подозреваю, что это предполагает изменение следующего кода:

context.lineTo(evt.pageX - offset.left, evt.pageY - offset.top);

1 Ответ

5 голосов
/ 05 декабря 2011

Очень просто вы можете использовать 4 поля ввода и принимать значение каждого при нажатии кнопки

button.addEventListener('click', function() {
    ctx.beginPath();
    ctx.moveTo(x1.value, y1.value);
    ctx.lineTo(x2.value, y2.value);
    ctx.stroke();
}, false);

http://jsfiddle.net/TeGGx/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...