Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2010, 19:57   #1
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
Вопрос Плавное передвижение курсора

Здравствуйте, помогите мне разобраться вот в чом...
Надо зделать плавное передвижение курсора, от начальной позиции, до точки, которая будет вводиться в программе, SetCursorPos сразу перемещает на данную точку, а как зделать плавное передвижение?
W0LF вне форума Ответить с цитированием
Старый 12.01.2010, 19:59   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Попробуйте в цикле SetCursorPos между тиками цикла ставьте Апплик.Процессмессаджес.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.01.2010, 20:13   #3
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Так если в цыкле, то будет перемещаться сначало по Х, а потом по Y

В цыкле оно рывками и очень быстро перемещаеться, и к тому же как узнать, ведь цыкл может двигаться к число которое меньше начальной Х, там надо будет downto, а если больше to...

Последний раз редактировалось W0LF; 12.01.2010 в 20:17.
W0LF вне форума Ответить с цитированием
Старый 12.01.2010, 20:18   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

а вы делайте по прямой между двумя точками... формулу напомнить или сами найдете?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.01.2010, 20:18   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Так если в цыкле, то будет перемещаться сначало по Х, а потом по Y
О_о Вы меня смущаете...
Код:
X2 = 350
X1 = 100
Y2 = 600
Y1 = 300

XDelta := (X2-X1)/300;
YDelta := (Y2-Y1)/300;
XN:=X1;
YN:=Y1;
For N:=1 to 300 do
 Begin
  SetCursorPos(XN,YN);
  XN:=XN+XDelta;
  YN:=YN+YDelta;
 End;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.01.2010, 20:24   #6
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Незнаю, все также гипер-рывками... ((
Цыкл проходит же почти мгновенно, вот из-за этого и резкое телепортирование курсора...

Последний раз редактировалось W0LF; 12.01.2010 в 20:26.
W0LF вне форума Ответить с цитированием
Старый 12.01.2010, 20:26   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Увеличьте 300 до 600 и проставьте Round
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.01.2010, 20:28   #8
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Все тот же эффект...

Цитата:
Сообщение от raxp Посмотреть сообщение
а вы делайте по прямой между двумя точками... формулу напомнить или сами найдете?
Напомните)
W0LF вне форума Ответить с цитированием
Старый 12.01.2010, 20:29   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

нехорошо конечно sleep-ы, лучше по таймеру сделайте...
Код:
var x,y, x1,x2,y1,y2: integer;
    t: tpoint;
begin
 getcursorpos(t);
 x1:= t.x; y1:= t.y;
 x2:= x1 + 300; y2:= y1+ 100;

 for x:=x1 to x2 do begin
  y:= trunc((x-x1)*(y2-y1)/(x2-x1)+ y1);
  application.ProcessMessages;
  sleep(10);
  setcursorpos(x,y)
 end
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.01.2010, 20:31   #10
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

raxp блогадарю, работает, перемещает плавно...
А как переместить например на точку 0;50 ? как введя точку на нее перемещать?

Последний раз редактировалось W0LF; 12.01.2010 в 20:34.
W0LF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передвижение фигур rododendron Общие вопросы C/C++ 1 01.06.2009 20:38
Алгоритм (плавное увеличение) BOBAH13 Общие вопросы Delphi 4 07.01.2009 20:01
Плавное появления формы Claster Помощь студентам 4 12.11.2008 23:59
Передвижение формы JIK Помощь студентам 2 12.07.2008 17:45
Плавное появление формы HAMMAN Общие вопросы Delphi 3 15.05.2008 14:20