如何在Fabric.js中模糊对象(不是图像)?

8

我们是否可以使用fabricjs在Canvas上模糊对象,比如矩形、多边形。至少要使对象的边缘变得柔和。

更新:

我有另一种方法,我们可以模糊对象的阴影。所以可以先对对象阴影进行模糊处理,然后将偏移设置为相反方向,如下所示:

var canvas = new fabric.Canvas("my-canvas");

var rect = new fabric.Rect({
    top: -600,
    left: 100,
    fill: 'red',
    width: 100,
    height: 100,
    opacity: 0.5
});
rect.setShadow({
     color: 'red',
     blur: 7,
     offsetX: 0,
     offsetY: 700
});
canvas.add(rect);
<script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.1.0/fabric.all.min.js"></script>

<canvas id="my-canvas" height="400" width="400"></canvas>

但是问题在于我们无法使用globalCompositeOperation选项来实现这一点。
3个回答

0

查看 Fabric 演示:http://fabricjs.com/image-filters

关于复选框失焦的代码:

$('blur').onclick = function() {
applyFilter(9, this.checked && new f.Convolute({
  matrix: [ 1/9, 1/9, 1/9,
            1/9, 1/9, 1/9,
            1/9, 1/9, 1/9 ]
}));}

它可以工作。


0

我猜它会模糊整个画布。 - sharma sk

-4

fabricjs 是一个基于 HTML5 canvas API 的高级库。在 fabric 中,您直接操作画布对象本身,而不是上下文。要模糊一个对象,只需设置该对象的 opacity 属性即可。

var canvas = new fabric.Canvas("my-canvas");

var rect = new fabric.Rect({
    top: 100,
    left: 100,
    fill: 'red',
    width: 40,
    height: 40,
    opacity: 0.5
});

canvas.add(rect);
<script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.1.0/fabric.all.min.js"></script>

<canvas id="my-canvas" height="400" width="400"></canvas>


实际上,我想将对象的硬边缘变成软边缘。透明度不是一个好的选择。 - sharma sk
很抱歉无法回答这个问题。不过,硬边缘到软边缘是什么意思?这可能会帮助我得到一些想法。 - Richard Hamilton
硬边缘指的是普通的fabricjs矩形。软边缘则类似于此链接 - sharma sk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接