FabricJS – 如何在使用 JSON.stringify() 时排除 Line 对象被保存?


           

完整的 Python Prime 包

 9门课程                 2 电子书    

                   

教程点

人工智能和机器学习 Prime 包

 6门课程                 1 电子书    

                   

教程点

Java Prime 包

 9门课程                 2 电子书    

                   

教程点

在本教程中,我们将学习如何在 FabricJS 中使用时排除 Line 对象的保存。Line 元素是FabricJS中提供的基本元素之一。它用于创建直线。因为线元素在几何上是一维的并且不包含内部,所以它们永远不会被填充。我们可以通过创建 fabric.Line 的实例来创建线条对象,指定线条的 x 和 y 坐标并将其添加到画布中。序列化用于导出画布内容。为了实现这一点,我们使用和方法。excludeFromExport 属性允许我们在导出时包含或省略对象。JSON.stringify()toObject()toJSON()

语法

 new fabric.Line(points: Array, { excludeFromExport : Boolean }: Object)

参数

  • points - 此参数接受点数组,这些点确定 (x1, y1) 和 (x2, y2) 值,分别是线起点和终点的 x 轴和 y 轴坐标。

  • 选项(可选)- 此参数是一个对象,它为我们的线对象提供额外的自定义。使用此参数原点、笔划宽度和许多其他属性都可以更改,这些属性与 excludeFromExport 是其属性的对象相关。

选项键

  • excludeFromExport - 此属性接受布尔值。传递真值时,对象不会导出为对象或 JSON。

未使用 excludeFromExport 属性时的记录输出

例子

让我们看一个代码示例,以查看未使用 excludeFromExport 属性时记录的输出。在这种情况下,我们可以在我们的浏览器控制台(在开发工具中可用)中看到该对象没有被排除在导出之外并且以“type”:“line”开头,因此指示关于线对象。

<!DOCTYPE html>
<html>
<head>
   <!-- Adding the Fabric JS Library-->
   <script xx_src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
   <h2>Logged output when excludeFromExport property is not used</h2>
   <p>
      You can open dev tools and see in console that the serialized line object is being logged
   </p>
   <canvas id="canvas"></canvas>
   <script>
      
      //启动画布实例
      var canvas = new fabric.Canvas("canvas");
      canvas.setWidth(document.body.scrollWidth);
      canvas.setHeight(250);
      
      //启动一个 Line 对象
      var line = new fabric.Line([200, 100, 100, 40], {
         stroke: "blue",
         strokeWidth: 20,
      });
      
      //将其添加到画布
      canvas.add(line);
      
      //使用JSON.stringify方法序列化画布
      console.log(JSON.stringify(canvas));
   </script>
</body>
</html>

使用 excludeFromExport 属性时的记录输出

例子

在此示例中,我们将看到如何通过使用 excludeFromExport 属性并将其传递给值,我们可以忽略包含序列化行对象。

<!DOCTYPE html>
<html>
<head>
   <!-- Adding the Fabric JS Library-->
   <script xx_src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
   <h2> Logged output when excludeFromExport property is used </h2>
   <p>
      You can inspect from console in dev tools and see that the serialized line object is not being console logged
   </p>
   <canvas id="canvas"></canvas>
   <script>
      
      //启动画布实例
      var canvas = new fabric.Canvas("canvas");
      canvas.setWidth(document.body.scrollWidth);
      canvas.setHeight(250);
      
      //启动一个 Line 对象
      var line = new fabric.Line([200, 100, 100, 40], {
         stroke: "blue",
         strokeWidth: 20,
         excludeFromExport: true,
      });
      
      //将其添加到画布
      canvas.add(line);
      
      //使用JSON.stringify方法序列化画布
      console.log(JSON.stringify(canvas));
   </script>
</body>
</html>