![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Шаг мышки [D7, WinXP]
Laymer © (2006-05-31 13:04:00)Доброе время суток!!!
у меня есть объект Image. Как задать шаг мышки, чтоб она двигалась через каждые 20 пикселей????
Заранее благодарен!!!
RameS (2006-06-01 10:39:00) [1]согласен с zorik, если есть возможность, можно отключить стандартный курсор и выводить свой с нужным шагом (например, так div 20 * 20)
:)
zorik (2006-06-01 10:06:00) [2]Можна сам курсор мыши сделать невидимым, а рисовать свой курсор. Разбить область сеткой. И отрисовывать свой курсор в том узле, ближе к которому координаты мыши
StriderMan (2006-05-31 15:42:00) [3]1. Нужно учитывать начальные координаты мыши
2. Умножать нельзя, а то очень быстро будет бегать мышь.
Долго я с подобной задачей возился (делал визуальный редактор), там основная проблема была при перетаскивании нескольких объектов.
вобщем задачу решил, хотя на пальцах объяснить не смогу. Основная идея в хранении относительного смещения мыши, и когда оно достигает определенного значения - двигать реальный указатель.
задача по началу кажется тривиальной, но это не так.
_RusLAN (2006-05-31 15:29:00) [4]Laymer (31.05.06 13:37) [3]
И почему не учитывается в какую сторону пользователь двинул мышку?
p.X := Self.Left + PoleUser.Left + x + 20;
Он что только влево двигает?. а если в право - тогда ж надо отнимать 20.
Eraser (2006-05-31 13:41:00) [5]
> Laymer (31.05.06 13:37) [3]
см. ф-ю перевода клиентских координат в экранные ClientToScreen.
antonn (2006-05-31 13:39:00) [6]нужно div'ить
x:=(x div 20)*20; //примерно так:)
и не саму мышку, а курсор.
Laymer (2006-05-31 13:37:00) [7]Это все глобальные координаты мыши.
А есть ли возможность изменение только в пределе этого объекта???
Вот что я зделал
...
var p: TPoint;
...
p.X := Self.Left + PoleUser.Left + x + 20;
p.Y := Self.Top + PoleUser.top + y + 20;
Mouse.CursorPos := p;
Работает не правельно, мышь не туда куда надо. Что еще надо учесть???
Eraser (2006-05-31 13:21:00) [8]
> Kolan © (31.05.06 13:17) [1]
может лучше прибавлять :)
Kolan (2006-05-31 13:17:00) [9]В MouseMove умножай X И Y на 20 и делай
SetCursorPos