Я использую Konva.js для аннотации визуализации данных в браузере. Обычный вариант использования - рисование линий между формой (прямоугольник, эллипс) и ее описанием (текстовый узел). Линии должны быть перетащены, повернуты и изменены пользователями. Изменение размера ограничено шириной линии.
В настоящее время добавляются строки и их трансформаторы:
var line = new Konva.Line({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
points: [0, 0, 100, 0],
stroke: '#000',
strokeWidth: 3,
lineCap: 'round',
lineJoin: 'round',
draggable: true,
id: id,
strokeScaleEnabled: false,
hitStrokeWidth: 15
});
layer.add(line);
var tr = new Konva.Transformer({
node: line,
enabledAnchors: ['middle-left', 'middle-right']
});
layer.add(tr);
Правильное позиционирование линии в данный момент не очень интуитивно понятно, поскольку требует, чтобы пользователь отдельно поворачивал и изменял размер линии, используя привязки поворота, левого и среднего правого углов.
Вместо этого я ищу способ использовать среднюю левую и среднюю правую привязки для поворота и изменения размера линии одновременно. Мое вдохновение для этого - PowerPoint - линии имеют только якоря на обоих концах, которые можно использовать для одновременного изменения размера и поворота:
![Lines in PowerPoint](https://i.stack.imgur.com/fVBSL.png)
Я пытался объединить функции вращения и середины левого / среднего правого в функции Konva Transformer _handleMouseMove, но это работает не так, как ожидалось.
Кто-нибудь, возможно, нашел способ использовать левый и правый якоря, чтобы делать обе вещи одновременно?