Парни подскажите, есть canvas, на канвасе есть фигуры отчерчены по x,y,w,h эти фигуры можно двигать. Далее я сделал увеличение canvas при прокрутке колесиком.
var mousex = event.offsetX;
var mousey = event.offsetY;
var wheel = event.deltaY < 0 ? 1 : -1;
// Вычисление коэффициента масштабирования
var zoom = Math.exp(wheel * this.scaleOption.zoomIntensity);
// Переводите так, чтобы видимое начало находилось в начале контекста.
this.context.translate(this.scaleOption.x, this.scaleOption.y);
// сдвиньте начало координат (координаты угла), чтобы учесть это
this.scaleOption.x -= mousex / (this.scaleOption.scale * zoom) - mousex / this.scaleOption.scale;
this.scaleOption.y -= mousey / (this.scaleOption.scale * zoom) - mousey / this.scaleOption.scale;
this.context.scale(zoom, zoom);
this.context.translate(-this.scaleOption.x, -this.scaleOption.y);
Теперь когда я нажимаю на фигуру позиция нового курсора отличается от того, который на фигуре поскольку канвас увеличен и фигура сдвинулась по x.y относительно канваса, как мне вычислить позицию относительно когда cansas scale 1, хоть это и не так?