Konva-JS:如何在平移、缩放或旋转后获取自定义形状的更新顶点坐标?

Konva-JS: how do you get the updated vertices coordinates for custom shape after translation, scale or rotation?

我正在使用 React-Konva(KonvaJS 的 React 版本)绘制自定义形状,主要是不规则多边形,并对其应用变换,例如四处移动、缩放和旋转。

现在,一旦多边形就位,我就需要另一个特征的顶点坐标,但即使我四处移动它并进行变换等等,形状似乎已正确修改,但顶点坐标仍然是初始坐标.

比如我在(0,0),(1,0),(0.5,2)处有一个三角形,然后将它一直拖到右边,拖完后三角形会出现在画布上的新位置,但是在打印顶点时它仍然会输出 (0,0), (1,0), (0.5,2).

如何获取所有顶点的更新坐标?我正在使用 Shape class for the polygons with draggable set to true for the translation, and the Transformer class 进行缩放和旋转。

Canvas,因此作为 canvas 功能的包装器和增强器的 Konva 使用矢量图形。矢量图形的一个重要部分是在旋转或缩放形状时 'transform'-ing 形状的概念。从本质上讲,形状会告诉你它的位置在旋转或缩放时是不变的,但重要的事实是它的变换是旋转和缩放的原因。

长话短说,无需了解矩阵数学,您可以 'get' 应用于您的形状的变换,并为其指定形状 vertices/corners 的 x、y 位置,然后它将 return 应用变换后那个点的 x,y。

这是对同一问题的早期回答,但关于矩形。

这是 vanilla JS,但希望你能 react-ify 它。

关键函数是node.getTransform,它的密切关系node.getAbsoluteTransform方法将检索应用于节点(形状)的变换。