如何使用 FabricJS 创建带有破折号图案边框的线条?


           

完整的 Python Prime 包

 9门课程                 2 电子书    

                   

教程点

人工智能和机器学习 Prime 包

 6门课程                 1 电子书    

                   

教程点

Java Prime 包

 9门课程                 2 电子书    

                   

教程点

在本教程中,我们将学习如何使用 FabricJS 创建带有虚线图案边框的线条。Line 元素是 FabricJS 中提供的基本元素之一。它用于创建直线。因为线元素在几何上是一维的并且不包含内部,所以它们永远不会被填充。我们可以通过创建fabric.Line的实例来创建线条对象,指定线条的 x 和 y 坐标并将其添加到画布。

为了改变边框破折号的外观,我们使用borderDashArray属性。但是,我们的线条对象必须有边框才能使该属性起作用。如果为 hasBorders 属性分配了一个 false 值,则该属性将不起作用。

语法

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

参数

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

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

选项键

  • borderDashArray - 此属性接受一个数组,该数组通过数组说明间隔来指定破折号模式。例如,如果我们传递一个值为 [2,3] 的数组,则表示一个 2px dash 和 3px gap 的破折号图案,并无限重复该图案。

使用自定义值将borderDashArray作为键传递

例子

让我们看一个使用FabricJS 中的 borderDashArray属性创建虚线图案边框的代码示例。在这个例子中,我们使用了一个 [7,10] 数组,它告诉我们将通过绘制一条 7px 长的线然后画一个 10px 的间隙并一遍又一遍地重复相同的图案来创建图案。

<!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>Passing borderDashArray as key with a custom value</h2>
   <p>
      You can select the line object to see the dash pattern
   </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,
         borderDashArray: [7, 10],
      });
      
      //将其添加到画布
      canvas.add(line);
   </script>
</body>
</html>

传递值为“false”的 hasBorders 键

例子

正如我们在此示例中所见,即使我们已为属性 borderColor 和borderDashArray分配了正确的值,它们也不起作用,因为 hasBorders 属性已设置为 false。设置为 false 时,不渲染对象的边框。

<!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>Passing hasBorders key with the value “false”</h2>
   <p>
      You can select the line object to see the dash pattern is not visible
   </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,
         borderDashArray: [7, 10],
         hasBorders: false,
      });
      
      //将其添加到画布
      canvas.add(line);
   </script>
</body>
</html>