Paper.js изменяет начальную точку координат слоя

каждый.

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

Я пытаюсь сделать это:

var layer = new Layer();
project.activeLayer.setName("DrawingStuff");
project.activeLayer.setPosition(paperjs.project.view.center);
project.activeLayer.bounds.x = 300;
project.activeLayer.bounds.y = 300;
project.activeLayer.bounds.width = raster.width;
project.activeLayer.bounds.height = raster.height;

Но это не работает. Имя установлено, но границы и позиция по-прежнему пусты.

Буду очень благодарен за любой совет.

P.S. Я знаю, что могу просто пересчитать точку пути из системы координат холста в систему координат изображения, но я хочу попробовать изменить начальную точку координат слоя.


person Alexey Nikiforov    schedule 07.03.2015    source источник


Ответы (1)


Было бы проще использовать текущую систему координат и изменить свойства zoom и center view проекта. Взгляните на код инструмента масштабирования в main.js на http://sketch.paperjs.org:

var lastPoint;
var body = $('body');
zoomTool = new Tool({
    buttonClass: 'icon-zoom'
}).on({
    mousedown: function(event) {
        if (event.modifiers.space) {
            lastPoint = paper.view.projectToView(event.point);
            return;
        }
        var factor = 1.25;
        if (event.modifiers.option)
            factor = 1 / factor;
        paper.view.zoom *= factor;
        paper.view.center = event.point;
    },

    ...

    mousedrag: function(event) {
        if (event.modifiers.space) {
            body.addClass('zoom-grab');
            // In order to have coordinate changes not mess up the
            // dragging, we need to convert coordinates to view space,
            // and then back to project space after the view space has
            // changed.
            var point = paper.view.projectToView(event.point),
                last = paper.view.viewToProject(lastPoint);
            paper.view.scrollBy(last.subtract(event.point));
            lastPoint = point;
        }
    },
    ...
});
person Alex Blackwood    schedule 08.03.2015