【问题标题】:How to make a hole in fabricjs polygon如何在fabricjs多边形中打一个洞
【发布时间】:2016-03-08 02:06:01
【问题描述】:

我想用fabricjs 在多边形内部打一个洞。我可以使用普通的 html5 画布逆时针制作它,如下所示,但我更喜欢使用 fabricjs 制作它。有谁知道如何使用“fabriicjs”实现附加图像?

像这样:

【问题讨论】:

  • html5 画布可以作为Fabric.Image 的图像源。为简单起见,如果您可以在 html5 画布上绘制您想要的形状,请执行此操作并从画布创建一个 Fabric.Image。
  • @markE.. 不。我想以编程方式创建带有孔的多边形。我有一个多边形及其孔的坐标点。如何做到这一点..?
  • 明白! AFAIK,FabricJS 还不支持从其多边形创建切口所需的合成。我的评论是一种解决方法,我已经在答案中发布了实施细节。干杯!

标签: javascript jquery fabricjs


【解决方案1】:

这是在 FabricJS 上绘制剪切多边形的一种方法:

据我所知,FabricJS 还不支持从其多边形创建切口所需的合成,所以这里有一个解决方法。

  1. 在 html5 画布上绘制剪切多边形。 For example

    • 从您指定的点绘制多边形。
    • 设置.globalCompositeOperation='destination-out'。这将导致所有新绘图充当“橡皮擦”,并将删除新绘图下的所有现有像素。
    • 从您指定的点绘制切口。
  2. 使用 html5 画布作为新 Fabric.Image 的图像源。

    // Create your polygon with transparent cuts on this html5 canvas
    // Use destination-out compositing to "punch holes" in your polygon
    var html5canvas=document.getElementById('myhtml5CanvasElement');
    
    // then use the html5 canvas as an image source for a new Fabric.Image
    var c=new Fabric.Image(html5Canvas);
    

【讨论】:

  • 这是一个好主意,但这里有些问题.. 可以从画布制作多边形到图像。如果可能,请举个例子。然后“destination-out”只在对象上覆盖白色。但我想要那个透明的剪裁。我试试here
  • 正如我在回答中所说,FabricJS 不支持合成,因此您必须在常规 html5 画布上进行合成,并将该画布用作 Fabric.Image 的图像源。您将拥有一个包含多边形的 Fabric.Image,并且 2 个切口将是透明的。 Here's 示例图像。 Destination-out compositing 使像素透明。 因此,使用 destination-out 合成绘制剪切路径将在较大的多边形中“打出透明孔”。
  • 感谢@markE为此付出的宝贵时间。我理解这个概念。坦克再次
猜你喜欢
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
相关资源
最近更新 更多