gpt4 book ai didi

design-patterns - 织物 JS 中对象缩放的模式重复

转载 作者:行者123 更新时间:2023-12-02 03:43:33 25 4
gpt4 key购买 nike

Is there any way to repeat the pattern inside an object in fabric JS.

假设我有一个填充有图案的矩形。我希望在缩放矩形时重复该模式。

现在当我缩放它时它正在缩放。

谢谢

最佳答案

@ user2571818 我也在寻找这个,终于让它工作了。我们将不得不使用 object:scaling事件将对象缩放回 1x 并更改对象的大小,而不是使模式重复而不是缩放它。看这里

var canvas = new fabric.Canvas('c');
fabric.Object.prototype.transparentCorners = false;

var padding = 0;

fabric.Image.fromURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAASdEVYdFNvZnR3YXJlAEdyZWVuc2hvdF5VCAUAAADLSURBVFhH7ZnBCoMwEET9/68URBHSNj0UolFoI+aQickKlT05jz0MGQIPkb2kadu3ta42ff/MTtLRazct55bajOMjO0lHr920vnWMMTGV0GuphVALoRaiqNV1dq4TLsdUIrTe+z0fw+ndmEo0w/D61AmXYyqh1179WjGVuNLyl0eohVALuZ8Wtzwgt9zyiNxSC6EWQi1EUYtbHpBbbnlEbqmFUAuhFqKoxS0PyC23PCK31EKohVAL0dXK3vLSOX0TnKZ1z8fw/3uiW37L27QIZwrV4gAAAABJRU5ErkJggg==', function(img) {

img.scaleToWidth(50);
var patternSourceCanvas = new fabric.StaticCanvas();
patternSourceCanvas.add(img);
patternSourceCanvas.renderAll();
var pattern = new fabric.Pattern({
source: function() {
patternSourceCanvas.setDimensions({
width: img.getScaledWidth() + padding,
height: img.getScaledHeight() + padding
});
patternSourceCanvas.renderAll();
return patternSourceCanvas.getElement();
},
repeat: 'repeat'
});

var rect = new fabric.Rect({
width: 250,
height: 250,
fill: pattern,
objectCaching: false
});

canvas.add(rect);
rect.center().setCoords();

});



canvas.on('object:scaling', function(e) {
if (e.target != null) {
console.log(e.target);
var obj = e.target;
var height = obj.height * obj.scaleY;
var width = obj.width * obj.scaleX;
obj.height = height;
obj.width = width;
obj.scaleX = 1;
obj.scaleY = 1;
}
});

JSFiddle: https://jsfiddle.net/dotriz/ajsdmg4s/

关于design-patterns - 织物 JS 中对象缩放的模式重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18734785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com