【发布时间】:2014-11-09 22:58:37
【问题描述】:
使用 KineticJS 5.1.0
我有一个带有笔划的 KineticJS 图像。我想对这张图片应用一个过滤器。缓存并应用过滤器后,笔触消失了。
Here is a JSFiddle 和我的演示代码:
var imageObj = new Image();
imageObj.onload = function() {
var stage = new Kinetic.Stage({
container: 'container',
width: 600,
height: 700
});
var layer = new Kinetic.Layer();
img = new Kinetic.Image({
x: 250,
y: 200,
image: imageObj,
draggable: true
});
var strokeWidthValue = 10;
img.setOffsetX(img.getWidth() / 2);
img.setOffsetY(img.getHeight() / 2);
img.stroke("green");
img.strokeWidth(strokeWidthValue);
img.strokeScaleEnabled(false);
img.strokeEnabled(true);
layer.add(img);
stage.add(layer);
img.cache();
img.filters([Kinetic.Filters.Invert]);
layer.draw();
};
imageObj.crossOrigin = "anonymous";
imageObj.src =
"https://dl.dropboxusercontent.com/u/47067729/darth-vader.jpg";
这是我应用过滤器之前的图像:
在我应用过滤器之后:
如何在应用滤镜后恢复笔触?
编辑:我也尝试为边框添加额外的空间,但结果显示粉红色边框,我的边框应该是绿色的。这是我尝试过的缓存功能:
img.cache({
x: -(img.getWidth() / 2) - strokeWidthValue,
y: -(img.getHeight() / 2) - strokeWidthValue,
width: img.getWidth() + (strokeWidthValue * 2),
height: img.getHeight() + (strokeWidthValue * 2)
});
结果如下:
完整的例子可以在this JSFiddle找到。
【问题讨论】:
标签: javascript html kineticjs