以编程方式将图像添加到 fabricJS 中的 canvas
programatically add images to canvas in fabricJS
我有一张图片要添加到 fabricJS canvas。用户将指定应在 canvas.
上添加相同图像的次数
当我遍历用户输入的次数并使用 fabric.Image.fromURL 添加时,它只会添加一次,并且只会添加到最后一个位置。
编辑:
Here is the jsfiddle on what I am trying to do
http://jsfiddle.net/apsixion/9g0Lfydw/3/
这是我今天解决的方法..
将绘制图像的代码移动到外部的不同函数,并在外观中调用该函数。可能不是最佳解决方案,但对我有用。
// create a wrapper around native canvas element (with id="c")
var canvas = new fabric.Canvas('c', {
selection: false
});
function drawRectangles(number) {
i = 0;
var pic =
"http://depts.washington.edu/hplab/wordpress/wp-content/uploads/2014/10/smiley-e1415084033498.jpeg";
for (var i = 0; i < number; i++) {
var rect = new fabric.Rect({
left: 5 + i * 160,
top: 10,
width: 150,
height: 150,
lockRotation: true,
lockMovementX: false,
lockMovementY: false
});
canvas.add(rect);
}
for (var k = 0; k < number; k++) {
drawStars(k);
}
}
function drawStars(k) {
var picStars =
"http://reviews.babymonitorsdirect.co.uk/images/5-stars.jpg";
fabric.Image.fromURL(picStars, function (img2) {
img2.set({
lockRotation: true,
lockMovementX: true,
lockMovementY: true,
left: 5 + k * 160,
top: 10,
width: 50,
height: 50,
lockScalingX: true,
lockScalingY: true,
selectable: true,
hasControls: false
});
canvas.add(img2);
});
}
drawRectangles(5);
我有一张图片要添加到 fabricJS canvas。用户将指定应在 canvas.
上添加相同图像的次数当我遍历用户输入的次数并使用 fabric.Image.fromURL 添加时,它只会添加一次,并且只会添加到最后一个位置。
编辑:
Here is the jsfiddle on what I am trying to do
http://jsfiddle.net/apsixion/9g0Lfydw/3/
这是我今天解决的方法.. 将绘制图像的代码移动到外部的不同函数,并在外观中调用该函数。可能不是最佳解决方案,但对我有用。
// create a wrapper around native canvas element (with id="c")
var canvas = new fabric.Canvas('c', {
selection: false
});
function drawRectangles(number) {
i = 0;
var pic =
"http://depts.washington.edu/hplab/wordpress/wp-content/uploads/2014/10/smiley-e1415084033498.jpeg";
for (var i = 0; i < number; i++) {
var rect = new fabric.Rect({
left: 5 + i * 160,
top: 10,
width: 150,
height: 150,
lockRotation: true,
lockMovementX: false,
lockMovementY: false
});
canvas.add(rect);
}
for (var k = 0; k < number; k++) {
drawStars(k);
}
}
function drawStars(k) {
var picStars =
"http://reviews.babymonitorsdirect.co.uk/images/5-stars.jpg";
fabric.Image.fromURL(picStars, function (img2) {
img2.set({
lockRotation: true,
lockMovementX: true,
lockMovementY: true,
left: 5 + k * 160,
top: 10,
width: 50,
height: 50,
lockScalingX: true,
lockScalingY: true,
selectable: true,
hasControls: false
});
canvas.add(img2);
});
}
drawRectangles(5);