views:

499

answers:

3

I want to implement zooming on the mouse pointer with the mouse wheel. That is scaling the image while the point under the mouse pointer stays fixed.

Here is my code, which doesn't work very well

var scala = 1 + event.wheelDelta / 1000;
canvas.context.translate(-canvas.mouse.x * ( scala - 1 ) / canvas.scale,-canvas.mouse.y * ( scala - 1 ) / canvas.scale);
canvas.context.scale(scala,scala);
canvas.scale *= scala;
//canvas.scale is my variable that is initially set to 1.
//canvas.mouse is my variable that represents the mouse position relative to the canvas
A: 

My guess is that you need to do a canvas.context.restore() after each redraw, if you are saving the zoom level.

Eric
A: 

Without looking at anything else, you'll need 2 translates: one before to move the mouse point to (0,0), and one after to move (0,0) (now with the zoomed picture) to where the mouse was.

Claudiu
A: 

Solved it and the answer is here: same question

csiz