Fabric.js – 如何检查图像对象是否完全包含在另一个对象的区域内?


在本教程中,我们将学习如何使用 FabricJS 检查图像对象是否完全包含在另一个对象的区域内。我们可以通过创建fabric.Image的实例来创建图像对象。由于它是 FabricJS 的基本元素之一,我们还可以通过应用角度、不透明度等属性轻松自定义它。为了检查图像对象是否完全包含在另一个对象的区域内,我们使用isContainedWithinObject方法。

语法

isContainedWithinObject(other: Object, absolute: Boolean, calculate: Boolean ): Boolean

参数

  • other − 此参数接受一个对象,该对象指定我们要测试的对象。

  • absolute(可选) − 此参数接受一个字符串值,该值指定是否使用不带 viewportTransform 的坐标。此参数是可选的。

  • calculate(可选) − 此参数接受一个布尔值,该值指定是否使用当前位置的坐标。此参数是可选的。

使用isContainedWithinObject方法

示例

让我们看一个代码示例,以查看使用isContainedWithinObject方法时记录的输出。isContainedWithinObject方法在检查图像对象是否完全包含在另一个对象的区域内时返回 true 或 false。

<!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>Using isContainedWithinObject method</h2> <p> You can open console from dev tools and see that the logged output contains a true value </p> <canvas id="canvas"></canvas> <img src="https://tutorialspoint.com/images/logo.png" id="img1" style="display: none" /> <script> // Initiate a canvas instance var canvas = new fabric.Canvas("canvas"); canvas.setWidth(document.body.scrollWidth); canvas.setHeight(250); // Initiating the image element var imageElement = document.getElementById("img1"); // Initiate an Image object var image = new fabric.Image(imageElement, { top: 50, left: 110, }); // Initiate a rectangle object var rectangle = new fabric.Rect({ width: 390, height: 130, top: 40, left: 80, fill: "transparent", stroke: "red", strokeWidth: 6, }); // Add them to the canvas canvas.add(rectangle); canvas.add(image); // Using isContainedWithinObject method console.log( "Is the Image object contained within the area of the rectangle object ? : ", image.isContainedWithinObject(rectangle) ); </script> </body> </html>

使用isContainedWithinObject方法与多个对象

示例

在此示例中,我们分别使用了isContainedWithinObject方法以及两个矩形对象 rect1 和 rect2。由于图像对象未包含在 rect2 的区域内,因此控制台返回 false 值。

<!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>Using isContainedWithinObject method with multiple objects</h2> <p> You can open console from dev tools and see that the logged output contains a false value </p> <canvas id="canvas"></canvas> <img src="https://tutorialspoint.com/images/logo.png" id="img1" style="display: none" /> <script> // Initiate a canvas instance var canvas = new fabric.Canvas("canvas"); canvas.setWidth(document.body.scrollWidth); canvas.setHeight(250); // Initiating the image element var imageElement = document.getElementById("img1"); // Initiate an Image object var image = new fabric.Image(imageElement, { top: 50, left: 110, }); // Initiate a rectangle object var rect1 = new fabric.Rect({ width: 390, height: 130, top: 40, left: 80, fill: "transparent", stroke: "red", strokeWidth: 6, }); // Initiate another rectangle object var rect2 = new fabric.Rect({ width: 120, height: 40, top: 170, left: 320, fill: "blue", }); // Add them to the canvas canvas.add(rect1); canvas.add(rect2); canvas.add(image); // Using isContainedWithinObject method console.log( "Is the Image object contained within the area of the rectangle (rect2) object?: ", image.isContainedWithinObject(rect2) ); </script> </body> </html>

结论

在本教程中,我们使用两个示例演示了如何在 FabricJS 中检查图像对象是否完全包含在另一个对象的区域内。

更新于: 2022年10月26日

574 次浏览

开启你的职业生涯

通过完成课程获得认证

立即开始
广告