Вниз
Скачать: CL | DM;

Алгоритм перемещения курсора мыши   Найти похожие ветки 

← →
worldmen   (2009-06-30 13:13) [0]

Мне нужно перемещать плавно курсор мыши. Кликать и ставить курсор в нужное место получается, но надо чтоб он в это место плавно перемещался. Если только по вертикали или горизонтали это легко.
А есть алгоритм чтоб по диагонали можно было?


← →
clickmaker ©   (2009-06-30 13:16) [1]

> чтоб по диагонали можно было?

то есть либо x, либо у менять уже умеем, а сразу оба - нет?


← →
Palladin ©   (2009-06-30 13:16) [2]

господи...


← →
Anatoly Podgoretsky ©   (2009-06-30 13:28) [3]

К черту


← →
wordmen   (2009-06-30 13:44) [4]


> то есть либо x, либо у менять уже умеем, а сразу оба - нет?

Если так, то плучится перемещение сразу по вертикали (или горизонтали) а потом по горизонтали, т.е. по квадратам ходить.
А чтоб сразу по диагонали надо разбивать на отрезки в зависимости длины и ширины.
Идеально конечно перемещать из точки (10, 10) в точку (100, 100) - по однопу пикселю за шаг по вертикали и горизонтали, а если надо переместить в (150,300) то надо делить на отрезки и как-то правильно оприращивать и округлять


← →
clickmaker ©   (2009-06-30 13:45) [5]

> если надо переместить в (150,300)

алгоритм Брезенхейма для рисования линий посмотри


← →
Palladin ©   (2009-06-30 13:49) [6]


> то надо делить на отрезки и как-то правильно оприращивать
> и округлять

угу, используя математику начальных классов


← →
Anatoly Podgoretsky ©   (2009-06-30 13:52) [7]

> clickmaker  (30.06.2009 13:45:05)  [5]

LineDDA именно этот алгоритм и реализует.


← →
И. Павел   (2009-06-30 20:53) [8]


> то надо делить на отрезки и как-то правильно оприращивать
> и округлять


Из уравнения линии по двум точкам получается так:

procedure TForm1.Button1Click(Sender: TObject);
var i, y, x, y1, y2, x1, x2:integer;
begin
 x1:=10;
 y1:=10;
 x2:=300;
 y2:=200;
 for i:=1 to 100 do
 Begin
   y:=y1+(y2-y1)*i div 100;
   x:=x2+(y-y2)*(x1-x2) div (y1-y2);
   Button1.Top:=y;
   Button1.Left:=x;
   Refresh;
   Sleep(10);
 end;
end;


← →
wordmen   (2009-07-01 11:20) [9]

СПАСИБО, ОТЛИЧНО РАБОТАЕТ.
А то по алгоритму Брезенхема все равно по одной линии (по диагонали в 45 градусов) идет


← →
Anatoly Podgoretsky ©   (2009-07-01 11:26) [10]

Вот взял и опустил Брезенхема.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
15-1246566925
Юрий
2009-07-03 00:35
2009.08.30
С днем рождения ! 3 июля 2009 пятница


2-1246197040
@!!ex
2009-06-28 17:50
2009.08.30
TIdUDPServer обарбатывает сообщения только при выходе


4-1216031319
Dash Rendar
2008-07-14 14:28
2009.08.30
Как запустить свое приложение вместо проводника?


4-1216039147
Gec
2008-07-14 16:39
2009.08.30
Получить Canvas фомы


2-1246696231
Gray
2009-07-04 12:30
2009.08.30
Ккак узнать номер выделенной строки в DBGrid?




   Наверх