Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Еще один вопрос   Найти похожие ветки 

 
SerJaNT ©   (2007-04-04 05:40) [0]

На событие Image OnMouseMove и обновляю положение другого Image вот так:

image3.Left:=x - (image3.width div 2);
image3.top:=y+25;


Вопрос такой: когда я перемещаю курсор, то image3 просто перемещается за курсором, а как сделать чтобы он плавно перемещался так сказать с эффектом "оставания", т.е. если я резко дерну мышку, то image3 плавно проследует за ней?


 
KSergey ©   (2007-04-04 06:08) [1]

Я вижу, например, 2 варианта
Какой будет лучше работать - не знаю.

а) таймер. Собственно перемещение делаем в собитии таймера. В OnMouseMove лишь активизируем таймер, разумеется.
б) в OnMouseMove кидаем себе некое кастомное сообщение, в его обработчике двигаем картинку и, если новое положение картинки не достигло требуемых координат - кидаем снова себе это же кастомное сообщение. Разумеется - через PostMesage, т.е. в очередь. Возможно. придется добавить небольшую задержку (таймером? может быть, но только не Sleep или пустой цикл!!), чтобы не получалось, что перемещение происходит слишком быстро, да еще с разной скоростью в зависимости от производительности.

Разумеется, в обоих случаях картинку двигаем не в позицию координат мыши, а на кукоторую величину относительно предыдущего положения. Короче тут подумать немного надо как лучше координаты пересчитывать.

Кроме того, возможно (для красоты эффекта) есть смысл сделать даже так: в основном потоке - отрисовка картинки и ее "возбуждение события2 по ее перемещения (отриковке в новых координатах), а в дополнительном - таймер, который бы вне зависимости от всего прочего отсчитывал кол-во шагов, на которое надо переместить картинку. В противном случае на медленных машинах рискуем получить эффект, когда картинка будет двигаться медленее из-за того, что каждый раз будет сдвигатья лишь на один шаг, в то время, как время прошло уже порядочно и надо бы двинуться на два-три и т.д. шага, пусть это и будет приводить к некоторым "рывкам" - зато скорость движения будет постоянна (при большом времени отрисовки или прочих расходов на полезную работу приложения).



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1172743566
linox
2007-03-01 13:06
2007.04.29
к текущему времени добавить число


2-1176126598
vitv
2007-04-09 17:49
2007.04.29
Многострочный DBGrid, поиск информации


4-1164386044
LexusU
2006-11-24 19:34
2007.04.29
Как получить статус процесса на удаленном компьютере


15-1175486351
Jar
2007-04-02 07:59
2007.04.29
Не работает программа под Windows Vista


3-1171224124
Maestro
2007-02-11 23:02
2007.04.29
файл для хранения настроек подключения