簡體   English   中英

元素通過變壓器旋轉或縮放后,無法手動圍繞中心旋轉元素

[英]After the element is rotated or scaled by transformer, the element cannot be rotated around the center manually

canvas 中有一個元素。 每次單擊按鈕時,我都希望它圍繞其中心點旋轉 90 度。 所以當我判斷這個元素的原點不在中心點時,我會手動指定它的原點到中心點。 當我不使用變壓器旋轉或縮放它時,它工作得很好,可以圍繞中心點旋轉。但是,當我通過變壓器旋轉或縮放這個元素,然后單擊按鈕旋轉它時,它的 position 是偏移的,如果我繼續單擊它,它可以圍繞中心點旋轉。 我希望它始終圍繞中心點旋轉 90 度,但我不知道如何解決它。 代碼如下

<button @click="rotate">rotate</button>

let stage = new Konva.Stage({
    container: container,
    width: 800,
    height: 800,
});

let layer = new Konva.Layer();
stage.add(layer);

let rect = new Konva.Rect({
    x:50,
    y:50,
    width: 200,
    height: 150
});
layer.add(rect);

let transformer = new Konva.Transformer({
    rotationSnaps: [0, 90, 180, 270],
    nodes:[rect]
});
layer.add(transformer);

function rotate(){
    if(!rect.attrs.offsetX){
        rect.setAttrs({
            offsetX:rect.attrs.width/2,
            offsetY:rect.attrs.height/2,
            x:rect.attrs.x + rect.attrs.width/2,
            y:rect.attrs.y + rect.attrs.height/2
        })
    }
    rect.rotate(90);
}

 let stage = new Konva.Stage({ container: container, width: 400, height: 400, }) let layer = new Konva.Layer() stage.add(layer) let rect = new Konva.Rect({ x: 150, y: 150, width: 200, height: 150, fill: "red", //set offset offsetX: 200 / 2, offsetY: 150 / 2, }) layer.add(rect) let transformer = new Konva.Transformer({ rotationSnaps: [0, 90, 180, 270], nodes: [rect], }) layer.add(transformer) function rotate() { rect.rotate(10) }
 <script src="https://unpkg.com/konva@8.3.10/konva.min.js"></script> <button onclick="rotate()">rotate</button> <div id="container"></div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM