Добился того, чтобы позиция мышки на рисунке не смещалась при изменении масштаба. Для этого двигаю скроллинг окна:
Код:
|
function SmoothSize(obj)
{var WidthDelta;//Img width change on onmousewheel
var HeightDelta;
var NewWidth;
var NewHeight;
var WidthScroll;//Cursor pos change compensation on scaling
var HeightScroll;
WidthDelta = event.wheelDelta;
NewWidth = obj.offsetWidth + WidthDelta;
NewHeight = Math.round(NewWidth*InitHeight[obj.id]/InitWidth[obj.id]);//taking into account img proportion
HeightDelta = NewHeight - obj.offsetHeight;
if ((NewWidth > 5)&&(NewHeight > 5))
{obj.width = NewWidth;
obj.height = NewHeight;
WidthScroll = Math.round(event.offsetX*WidthDelta/NewWidth);
HeightScroll = Math.round(event.offsetY*HeightDelta/NewHeight);
window.scrollBy(WidthScroll, HeightScroll);
}
} |
Минимальная величина картинки - 5 пикселей. Пропорции соблюдаются отлично по сравнению с прежним вариантом.
Получается сперва увеличение/уменьшение картинки (изменение obj.height и obj.width), затем смещение окна на нужную величину (window.scrollBy). Конечно, пока картинки меняют масштаб и смещаются, идет мусор на экране. Как избавиться от мусора, подскажите пожалуйста.