//zoom 放大倍数
zr.on("click", function (e) {
原X坐标 = e.offsetX/zoom + (Math.abs(e.target.transform[4])/zoom);
原Y坐标 = e.offsetY/zoom + (Math.abs(e.target.transform[5])/zoom);
e.offsetX = e.offsetX/zoomx;
e.offsetY = e.offsetY/zoomx;
var circle = new zrender.Circle({
shape: {
cx: e.offsetX,
cy: e.offsetY,
r: 3
},
xy:[原X坐标,原Y坐标],
scale:[zoom,zoom],
});
circleGroup.add(circle);
zr.add(circleGroup);
zr.on("mousewheel", function (e) {
zoom++;
circleGroup.eachChild(function (circle) {
circle.attr({
scale: [zoomx, zoomx],
origin: [e.offsetX, e.offsetY],
shape:{
cx:circle.xy[0],
cy:circle.xy[1],
r:3
}
})
})
})
})
以上代码并不是完整的。
zrender通过scale放大后,再点点需要先算出原坐标存起来,然后点的点的坐标是除以放大倍数后的坐标,再放大缩小的时候把原坐标覆盖当时点的坐标。