Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing zoom on a fixed point, javascript/canvas [duplicate]

Possible Duplicate:
Zoom in on a point (using scale and translate)

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
like image 486
csiz Avatar asked May 23 '10 16:05

csiz


2 Answers

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.

like image 173
Claudiu Avatar answered Oct 13 '22 00:10

Claudiu


Solved it and the answer is here: same question

like image 45
csiz Avatar answered Oct 13 '22 01:10

csiz