Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Шаг мышки [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо