Javascript 如何在缩放画布时保持相同的放大镜圆半径

Javascript 如何在缩放画布时保持相同的放大镜圆半径,javascript,canvas,fabricjs,Javascript,Canvas,Fabricjs,我正在尝试在fabric.js中实现一个功能,我必须使用放大镜和鼠标滚动来缩放图像。我几乎做到了,唯一的问题是在缩放画布(通过鼠标滚动)的同时,放大镜也在缩放 (函数(){ var canvas=this.\uu canvas=newfabric.canvas('c'); var半径=100, x=300, y=300, 镜头, 比例=2, 原始宽度=600, 原始高度=600; fabric.Image.fromURL('http://fabricjs.com/assets/pug_smal

我正在尝试在fabric.js中实现一个功能,我必须使用放大镜和鼠标滚动来缩放图像。我几乎做到了,唯一的问题是在缩放画布(通过鼠标滚动)的同时,放大镜也在缩放

(函数(){
var canvas=this.\uu canvas=newfabric.canvas('c');
var半径=100,
x=300,
y=300,
镜头,
比例=2,
原始宽度=600,
原始高度=600;
fabric.Image.fromURL('http://fabricjs.com/assets/pug_small.jpg,函数(img){
img.set({
宽度:原始宽度,
高度:原始高度,
事件:是的,
可选:false
});
lens=fabric.util.object.clone(img);
镜头组({
宽度:比例*原始宽度,
高度:比例*原始高度,
clipTo:功能(ctx){
ctx.arc(-this.left+x-this.width/2,--this.top+y-this.height/2,半径,0,Math.PI*2,真);
}
});
画布。添加(img、镜头);
});
canvas.on('mouse:move',函数(e){
x=e.e.layerX;
y=e.e.分层;
镜头组('左',-(比例-1)*x);
镜头组('顶部',-(比例-1)*y);
canvas.renderAll();
});
var canvasarea=document.getElementById(“canvases”);
canvasarea.addEventListener(“鼠标滚轮”,_zoomCanvas,false);
///火狐
canvasarea.addEventListener(“DOMMouseScroll”,_zoomCanvas,false);
函数_zoomCanvas(e,dragDelta,isDragged){
var evt=window.event | | e;
var delta=(dragDelta==未定义)?evt.detail?evt.detail*(-120):evt.wheeldta:dragDelta;
var curZoom=canvas.getZoom(),newZoom=curZoom+delta/4000,
x=e.offsetX,y=e.offsetY;
if(newZoom<0 | | newZoom
画布{
边框宽度:1pz;
边框样式:实心;
边框颜色:#000;
}


要反转缩放值,请单击<代码>var invZoom=1/canvas.getZoom()因此,如果希望半径保持不变<代码>半径=100*100感谢回复@Blindman67,它工作:)请回答这个问题你好,我有一个类似的代码,但我正在做:canvas.centerObject(img)所以,它不工作,因为我在画布中居中图像,请帮助…反转缩放值<代码>var invZoom=1/canvas.getZoom()因此,如果希望半径保持不变<代码>半径=100*100感谢回复@Blindman67,它工作:)请你回答这个问题你好,我有一个类似的代码,但我正在做:canvas.centerObject(img)所以,它不工作,因为我在画布中居中的图像,请帮助。。。