наверняка ктото уже чтото подобное делал.
по нажатию кнопки мыши на панели мы фиксируем начало движения.
дальше при движении мышки мы изменяем координаты панели.
при отжатии кнопки мышки снимаем флаг передвижения.
проблема в том, что при резком (относительно. просто не плавном) передвижении мышки при нажатой кнопке панель теряет фокус мышки и соответственно не может дальше перемещаться. т.е. мышка двигается, а панель стоит на старом месте.
M>проблема в том, что при резком (относительно. просто не плавном) передвижении мышки при нажатой кнопке панель теряет фокус мышки и соответственно не может дальше перемещаться. т.е. мышка двигается, а панель стоит на старом месте.
см. Control.Capture
Re[5]: Координаты на форме
От:
Аноним
Дата:
12.03.07 14:03
Оценка:
Здравствуйте, Milamber, Вы писали:
M>наверняка ктото уже чтото подобное делал. M>по нажатию кнопки мыши на панели мы фиксируем начало движения. M>дальше при движении мышки мы изменяем координаты панели. M>при отжатии кнопки мышки снимаем флаг передвижения.
M>проблема в том, что при резком (относительно. просто не плавном) передвижении мышки при нажатой кнопке панель теряет фокус мышки и соответственно не может дальше перемещаться. т.е. мышка двигается, а панель стоит на старом месте.
M>
M>пытался действия в Panel_MouseMove поместить в Paint формы. вообще ничего не происходит. M>возможно я перемудрил с действиями в Panel_MouseMove
Не совсем из твоего метода MouseMove понял что ты хочешь сделать. Но я очень много писал всяких интерактивных компонент, на которых нужно было что-то перетаскивать при помощи мыши (в основном всякие нарисованные при помощи GDI+ элементы). Общий подход всегда такой: запоминаем координату, где щелкнули (я обычно называю prevPoint), затем в MouseMove смещаем что нужно на разницу текущего положения — того положения, которое запомнили. А после этого обновляем prevPoint на текущее значение. Сделай так и будет тебе счастье .
Здравствуйте, Аноним, Вы писали:
А> Общий подход всегда такой: запоминаем координату, где щелкнули (я обычно называю prevPoint), затем в MouseMove смещаем что нужно на разницу текущего положения — того положения, которое запомнили. А после этого обновляем prevPoint на текущее значение. Сделай так и будет тебе счастье .
такая система у меня и реализована. запоминаем при нажатии кнопки координаты. и при движении изменяем на разницу между текущими и прошлыми. при следующем нажатии будут браться новые координаты. если менять прошлые сразу после изменения при движении мышки, то бред получается.
Здравствуйте, Igor Trofimov, Вы писали:
M>>проблема в том, что при резком (относительно. просто не плавном) передвижении мышки при нажатой кнопке панель теряет фокус мышки и соответственно не может дальше перемещаться. т.е. мышка двигается, а панель стоит на старом месте.
iT>см. Control.Capture