Форум: "Media";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
ВнизМасштабирование роликом мыши Найти похожие ветки
← →
BFG9k © (2005-07-28 15:57) [0]Нужен алгоритм масштабирования картинки с помощью ролика мыши (например как в автокаде). При прокрутке ролика точка, на которой находится курсор мыши остается неизменной, а вокруг нее изображение увеличивается/уменьшается. То есть осуществляется комбинация масштабирование+смещение(или скроллирование).
← →
Jeer © (2005-07-28 18:05) [1]BFG9k © (28.07.05 15:57)
Так сам же и сказал:
"То есть осуществляется комбинация масштабирование+смещение(или скроллирование)."
← →
BFG9k © (2005-07-28 18:07) [2]Угу, сказал. Теперь нужно рассчитать это смещение, чтобы достичь вышеизложенного результата. В этом вопрос.
← →
A22 © (2005-07-28 19:54) [3]попробуй FOV менять по скроллу, может результат устроит
← →
A22 © (2005-07-28 19:55) [4]а если будет мало - еще и камеру двигай по вектору взгляда
← →
BFG9k © (2005-07-29 15:45) [5]Речь идет о 2D картинке.
← →
A22 © (2005-07-30 00:28) [6]ну, можно 2д реализовать через 3д - тогда все советы подойдут.
а можно высчитать смещение мыши dV = (dx, dy) от левого-верхнего угла картинки, взять его относительно общего размера картинки - dV" = (dx/width, dy/height), потом отмасштабировать картинку и переместить ее так, чтобы левый-верхний угол новой, отмасштабированной картинки находился на расстоянии
dPos = ( new_width * dV".x, new_heigth * dV".y ) от мыши.
кажется, так :)
← →
BFG9k © (2005-08-04 17:29) [7]2 A22:
Не совсем понимаю твой алгоритм. Я делаю так (перемещается и масштабируется форма Form2):
//масштаб
sc:=1+Sign(WheelDelta)*WHEEL_SPEED;
//координаты нажатия мыши в системе координат Form2
x1:=MousePos.X-Form2.Left;
y1:=MousePos.Y-Form2.Top;
//...и где будет эта точка после масштабирования
x2:=x1*sc;
y2:=y1*sc;
//расстоияние, на которое нужно потом сместить картинку, чтобы
//эти точки совпали
dX:=x2-x1;
dY:=y2-y1;
//смещаем и масштабируем
Form2.SetBounds(Round(Form2.Left-dX),Round(Form2.Top-dY),
Round(Width*sc),Round(Height*sc));
Картинка "скачет" :( Мог быты в моей системе координат обьяснить, что я делаю не так ? Вроде бы тут все просто ...
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c