Konvajs:如何在分离后保持组中形状的位置和旋转



如何在分离后保持组中形状的位置,旋转和比例属性?

,如果用户移动或调整大小后,将组中的每个形状分离,旋转包裹在变压器下的组。

我尝试像以下来源一样尝试。

    <button id="ungroup">ungroup</button>
    <div id="container"></div>
    const stage = new Konva.Stage({
       container: 'container',
       width: window.innerWidth,
       height: window.innerHeight
    });
    const layer = new Konva.Layer();
    stage.add(layer);
    const rect = new Konva.Rect({
       x : 50, y : 50, width: 100, height: 100,
       fill: 'black',
    });
    const rect2 = new Konva.Rect({
       x : 150, y : 50, width: 80, height: 80,
       fill: 'red',
    });
    const group = new Konva.Group({
        draggable: true
    });
    group.add(rect);
    group.add(rect2);
    const tr = new Konva.Transformer({
        node: group
    });
    layer.add(group);
    layer.add(tr);
    layer.draw();
    document.getElementById('ungroup').addEventListener('click', () => {
        tr.remove()
      // how can keep the moved or rotated properties?
      rect.moveTo(layer);
      rect2.moveTo(layer);
        group.removeChildren();
      group.remove();
      layer.draw();
    });

一个组有两个矩形可以使用变压器移动。但是在分离它们之后,它们会失去运动,尺度和旋转。

您可以采用节点的绝对转换矩阵,并在分离后重新申请到节点。

const transform = node.getAbsoluteTransform();
const attrs = transform.decompose();
node.moveTo(layer);
node.setAttrs(attrs);

演示:https://codepen.io/elscorpio/pen/vqvlpg

相关内容

  • 没有找到相关文章