Перемещение элементов в преобразованном Canvas с помощью курсора мыши - PullRequest
0 голосов
/ 28 марта 2020

Я бы хотел переместить «виджеты» на холст (которые можно преобразовать) с помощью мыши. Каждый из этих виджетов является экземплярами класса и отвечает за собственный рисунок. Выглядит это так:

class Box {
    constructor(x=0, y=0) {
        this.x = x;
        this.y = y;
    }

    draw(){}
}

После Масштабировать курсор мыши на холсте Мне удалось настроить панорамирование и масштабирование холста, но я не могу понять, как переместить один из них. виджеты на столько же, сколько и сам холст. Все мои попытки заканчиваются переводом виджета. Вот где я:

c.addEventListener('mousemove',function(evt){
    // Get mouse position
    lastX = evt.offsetX || (evt.clientX - c.offsetLeft);
    lastY = evt.offsetY || (evt.clientY - c.offsetTop);
    let pt = ctx.transformedPoint(lastX,lastY);
    dragged = true;
    if (dragStart && (move_item === false)){
        let t_x = pt.x-dragStart.x;
        let t_y = pt.y-dragStart.y;
        ctx.translate(t_x,t_y);
    } else {
        if (dragStart && (move_item === true)){
            for (let i=0; i<boxes.length; i++){
                if (boxes[i].selected) {
                    let t = ctx.transformedPoint(
                        boxes[i].x,
                        boxes[i].y
                    );
                    let t_x = pt.x-dragStart.x;
                    let t_y = pt.y-dragStart.y;
                    let r = ctx.translatePoint(t.x, t.y, t_x, t_y);
                    boxes[i].x = r.x;
                    boxes[i].y = r.y;
                }
            }
        }
    }
    redraw();
},false);

Итак, как лучше всего перевести элемент холста с помощью мыши?

Спасибо за любую идею или места с кодом, чтобы посмотреть в:)

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