У меня есть изображение на холсте с помощью FabricJS, после загрузки изображения, которое я вызываю canvas.centerObject (img). У меня одинаковое изображение размером 2X, я пытаюсь внедрить функцию Magnify Glass, все работает отлично, не центрируя изображение, но как только я вызываю canvas.centerObject (img), большее изображение не отображается в исходном положении.Неверное положение после объекта центра с использованием ткани js canvas
fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg', function (img) {
img1 = img;
img.set({
width: originalWidth,
height: originalHeight,
evented: true,
selectable: false
});
lens = fabric.util.object.clone(img);
lens.set({
width: scale * originalWidth,
height: scale * originalHeight,
clipTo: function (ctx) {
ctx.arc(-this.left + x - this.width/2, -this.top + y - this.height/2, radius, 0, Math.PI * 2, true);
}
});
canvas.add(img, lens);
canvas.centerObject(img);//*******issue here****
});
canvas.on('mouse:move', function (e) {
x = e.e.layerX;
y = e.e.layerY;
lens.set('left', -(scale - 1) * x);
lens.set('top', -(scale - 1) * y);
canvas.renderAll();
});
Спасибо.
Если я понимаю, решение основано на этой строке кода: lens.set ('левый', - (масштаб - 1) * x + 300). Поэтому в основном я должен добавить 300 к большому изображению слева, чтобы получить centerObject с маленького изображения. Как я могу динамически вычислять это значение (300), чтобы заставить его работать для любого размера изображения? – Arnel
Половина ширины любого изображения ... но четверть размера изображения должна использоваться для левого свойства объектива ... но это также зависит от вашего размера холста. –
@Arnel Это ответ на ваш вопрос? Не возражаете ли вы пометить как ответ? Дайте мне знать, если у вас возникнут другие вопросы. Рад помочь. –