跳到主要内容

HTML5 Canvas 图形旋转吸附

在某些应用中,你可能希望在旋转角度接近某些值时进行吸附。吸附会使图形在接近指定值时像被粘住一样,其工作方式类似舍入。

常用吸附角度包括 0、45、90、135、180 度等。吸附使旋转角度更容易精确设置为这些值。

例如,如果吸附点为 45 度,用户无法将旋转角度设置为 43 度。它会舍入到 45 度。但是,用户仍可以将旋转角度设置为 35 度,因为该角度离 45 度太远,所以不会吸附。

操作说明:尝试旋转图形。观察 0、90、180 和 270 度处的吸附效果。

import Konva from 'konva';

const width = window.innerWidth;
const height = window.innerHeight;

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

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

const rect = new Konva.Rect({
x: 50,
y: 50,
width: 100,
height: 50,
fill: 'yellow',
stroke: 'black',
draggable: true,
});
layer.add(rect);

const tr = new Konva.Transformer({
nodes: [rect],
rotationSnaps: [0, 90, 180, 270],
rotationSnapTolerance: 30,
});
layer.add(tr);