IMI docs

Trace: zoom

Csharp:zoom

This is an old revision of the document!


Для реализации зума по Х необходимо спроецировать его из координат окна в локальное адресное пространство сцены.

Если локальные координаты вычисляются так:

var centerX = (elementLocationX + sceneOffsetX) * zoom;

,где

elementLocationX - позиция элемента

sceneOffsetX - смещение сцены

zoom - увеличение

то проекция вычисляется тупо обратным порядком операций.

Например, мы хотим зумировать в центр окна.

var windowTargetX = (window.Width / 2);

тогда проекция в локальные координаты будет

var Cx = windowTargetX / oldZoom - sceneOffsetX;

, где oldZoom - текущий коефициент увеличения(до изменения)

Новое смещение вычесляется так:

var xoffset = (Cx  + sceneOffsetX ) * oldZoom / newZoom-Cx;

, где newZoom - коефициент увеличения после изменения