![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передвижение курсора
k-man © (2003-03-02 17:59:00)Возможно на этот вопрос уже отвечали, но нет времени искать.
Как из текущего положения курсора мыши передвинуть его на середину к примеру кнопки button1, но передвинуть плавно
чтобы пользователь видел откуда и куда переехал указатель?
Anatoly Podgoretsky (2003-03-03 20:22:00) [1]Предпоследний это указатель на callback функцию, которая будет принимать зарактеристики следующей точки линии (само уравнение линии будет решаться внутри_, последнее использовать по своему вкусу, лучше просто не использовать.
Суть этой функции, в том, что в нее передаются начальные и конечные координаты, а функция выдет все промежуточные позиции точек, самым оптимальным образом.
То есть полнотью решает проблему и очень простая в использовании.
k-man (2003-03-03 20:17:00) [2]Анатолий тут обмолвился о некой функции LineDDA,
но почитав справку я не получил вразумительного
ответа о том как ей воспользоваться. Особенно интересуют последние два параметра. Может кто задавался таким вопросом?
jack128 (2003-03-02 21:41:00) [3]Тривиальная задача : найти уравнение прямой проходящей через 2 точки (x1, y1) (x2, y2)
y := (y2-y1)/(x2-x1)*x + y1-(y2-y1)/(x2-x1)*x1 ...
Подставляешь x c нужным шагом и вперед
k-man (2003-03-02 21:34:00) [4]Спасибо Rouse, как видишь жизнь заставила
и я теперь тоже "двигаю курсор мышки" ну
и само собой компилирую программы.
k-man (lerroy@mail.ru)
Rouse_ (2003-03-02 21:08:00) [5]Ну а если вот так
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
x,y,x1,y1: Real;
P: TPoint;
begin
GetCursorPos(P);
X:= p.x;
Y:= p.y;
x1:= x/100; // Тут на основе нужных координат рассчитываем смещение
y1:= y/100;
for i:= 1 to 100 do
begin
x:=x-x1;
y:=y-y1;
SetCursorPos(Trunc(x),Trunc(y));
Sleep(50);
end;
end;
Желаю успехов
Anatoly Podgoretsky (2003-03-02 21:05:00) [6]Используй LineDDA для получения промежуточных координат трассы.
k-man (2003-03-02 20:56:00) [7]Благодарен за ответы, но есть небольшая загвоздка:
Текущее положение и то в которое должен быть установлен
курсор всегда разные.
Как определить текущее ясно - GetCursorPos да и
новое положение известно. Соль в том чтобы
плавно как делает человек перевести курсор из одного
положения в другое, так что кода видимо будет больше.
jack128 (2003-03-02 18:23:00) [8]Только чтобы юзер ВИДЕЛ перемещение курсора надо в цикле это перемещать например
for i := 100 to 200 do begin
SetCursorPos(i,i);
Sleep(55);
end;
Rouse_ (2003-03-02 18:11:00) [9]SetCursorPos
Желаю успехов