如何使用 FabricJS 设置线条的旋转角度?
在本教程中,我们将学习如何使用 FabricJS 设置线条的旋转角度。线条元素是 FabricJS 提供的基本元素之一。它用于创建直线。由于线条元素在几何上是一维的并且不包含内部,因此它们永远不会被填充。
我们可以通过创建fabric.Line的实例,指定线条的 x 和 y 坐标并将其添加到画布上来创建线条对象。centeredRotation 属性允许我们使用线条对象的中心点作为变换的原点。
语法
new fabric.Line( points: Array , { angle: Number, centeredRotation: Boolean }: Object)
参数
points − 此参数接受一个数组点,它确定 (x1, y1) 和 (x2, y2) 值,分别为线条起点和终点的 x 轴和 y 轴坐标。
options(可选)− 此参数是一个对象,它为我们的对象提供额外的自定义。使用此参数,可以更改与线条对象相关的原点、笔划宽度和许多其他属性,其中angle和centeredRotation是属性。
选项键
angle − 此属性接受一个数字,以度为单位指定线条对象的旋转角度。
centeredRotation − 该属性接受一个布尔值,它确定线条对象的中心是否为变换的原点。
将angle作为键传递自定义值,并禁用线条的中心旋转
示例
让我们看一个代码示例,以设置 FabricJS 中线条的旋转角度。负角度表示逆时针方向,而正角度表示顺时针方向。由于我们将centeredRotation分配了一个假值,因此线条对象在使用其角点作为旋转中心时将旋转。
<!DOCTYPE html> <html> <head> <!-- Adding the Fabric JS Library--> <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script> </head> <body> <h2>Passing angle as key with a custom value and disabling the centered rotation for the Line</h2> <p> You can select and rotate the line object to verify that it uses its corner point as the center of rotation </p> <canvas id="canvas"></canvas> <script> // Initiate a canvas instance var canvas = new fabric.Canvas("canvas"); canvas.setWidth(document.body.scrollWidth); canvas.setHeight(250); // Initiate a Line object var line = new fabric.Line([200, 100, 100, 40], { stroke: "blue", strokeWidth: 20, centeredRotation: false, angle: 15, }); // Add it to the canvas canvas.add(line); </script> </body> </html>
启用线条对象的中心旋转
示例
从这个例子中我们可以看到,通过将centeredRotation属性设置为 true,我们的线条对象现在使用其中心作为旋转中心。在 1.3.4 版本之前,centeredScaling和centeredRotation包含在一个名为 centerTransform 的单个属性中。
<!DOCTYPE html> <html> <head> <!-- Adding the Fabric JS Library--> <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script> </head> <body> <h2>Enabling centered rotation for the line object</h2> <p> You can select and rotate the line object to verify that it now uses its center as center of rotation </p> <canvas id="canvas"></canvas> <script> // Initiate a canvas instance var canvas = new fabric.Canvas("canvas"); canvas.setWidth(document.body.scrollWidth); canvas.setHeight(250); // Initiate a Line object var line = new fabric.Line([200, 100, 100, 40], { stroke: "blue", strokeWidth: 20, centeredRotation: true, angle: 15, }); // Add it to the canvas canvas.add(line); </script> </body> </html>
广告