Показать сообщение отдельно
  #7 (permalink)  
Старый 01.11.2008, 13:02
Аспирант
Отправить личное сообщение для diagnost Посмотреть профиль Найти все сообщения от diagnost
 
Регистрация: 30.10.2008
Сообщений: 47

Добился того, чтобы позиция мышки на рисунке не смещалась при изменении масштаба. Для этого двигаю скроллинг окна:
Код:
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). Конечно, пока картинки меняют масштаб и смещаются, идет мусор на экране. Как избавиться от мусора, подскажите пожалуйста.

Последний раз редактировалось diagnost, 02.11.2008 в 02:32.
Ответить с цитированием