![]() |
|
|
![]()
|
|
| Kirgston |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Ребята... вот собственно переношу проект с Делфи под С++ =) мне надо добится результата чтобы мышка ставала по центру, и плавно перемещалась в правый верхний угол... в Делфи код был такой:
Центрую мышку и...
В результате мышка центруется и движется пока координаты не привысят допустимых... Это всё в таймере с интервалом 1 В С++ я это сделал так:
Тоисть я запускаю цыкл с проверкой и каждый раз на координаты... после чего их увеличиваю... но у меня мышка центрируется и попадает потом практически в самый конец... и скачет по углам... Пробовал менять цыкл... без него... пробовал с слипами... ничего... этот код также вписал в таймер... но оно чтото не правильно работает... помогите пожалуйста |
||||
|
|||||
| Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
вот мышка перемещается по экрану плавно по таймеру:
то же самое, только с условием:
Это сообщение отредактировал(а) Dmi3ev - 20.2.2009, 00:54 -------------------- |
||||
|
|||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Спасибо большое уже справился =) итог могу сказать такой... по меньше играйтесь с GetCursorPos
Это сообщение отредактировал(а) Kirgston - 20.2.2009, 10:21 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
что это значит -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Ееее не знаю... почему то у меня туда как бы числа рендомом... вообщем как вы видете сверху код. Вроде всё правильно. Но мышка прыгала по углам. Как только я это всё перевел в 2 переменные и работал с переменными всё стало "как надо" =). Не знаю изза чего это... но факт есть факт )))))
Ребята. Вот у меня появилась проблемка... захотелось чтобы мышка при определенном событии какбы направлялась в центр экрана. Да я понимаю... SetCursorPos(Screen->Width\2, Screen->Height\2) ; Но мне хочется больше импровизации =) хочется заставить мышку плавно перемещаться в центр. Да я например знаю как переместить с одного угла в центр или другой угол. Но тут как бы не так... а если мышка будет возле центра сверху... да я знаю что это очень геморойно, но интересно! =) Помогите пожалуйста хоть какимито мыслями |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
И что особо сложного?
Вычисляем разницу: Текущая координата минус координата центра. Эту разницу делим на желаемое кол-во шагов - получаем смещение Дальше в цикле по кол-ву шагов прибавляем к текущей координате смещение Ну естественно можно каждый шаг уточнять на момент того, что пользователь может мышкой и двигать в это время (гад какой). Забавно получится - дурак пользователь мышку двигает, а она упорно в центр сползает. Думаю очень обрадует такой наворот |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Неа что то тут не то... а если текущая координата меньше координаты центра? ... то что?... тогда курсор уплывает в минус...
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Тогда и смещение будет отрицательным само собой. Добавлено через 3 минуты и 11 секунд Беру пример на основе одной координаты. Допустим Х Кол-во шагов 100 Текущая мыши 10 Центр 700 Разница координат = 700-10=690 Смещение = 690/100=6.9 В цикле 100 раз прибавляем к 10 6.9 - в итоге получим 700 Теперь с другой стороны Текущая координата = 1100 Разница координат 700-1100 = -400 Смещение = -400/100 = -4 В цикле 100 раз прибавляем к 1100 -4 получаем те же 700 Математика однако. |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Вот формула координат центра
SetCursorPos( ((Screen->Width/2)-x)+x, ((Screen->Height/2)-y)+y); Как мне сделать теперь чтобы курсор бежал плавно? |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Чем мой вариант не подходит не пойму?!
|
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
я же тебе в начале написал, только интервал таймера поменьше поставь и наслаждайся... будет плавно... -------------------- |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Извините просто не увидел вашего варианта. Щас попробую!
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Еххххх ребята )))) не вьежаете вы ))))
Anikmar, тоже что и я сделал ))))) в итоге будет перемещение буквой Г. Сначала по Х, а потом по У. Уже также думал... надо заставить перемещатся одновременно... и учитывать что экран 4:3 делать просто инкремент или декремент нельзя... Dmi3ev, также повторюсь =) нельзя. А если у меня курсор будет с правой стороны? Тогда надо отнимать. А если сверху? А если сбоку? А если рядом с центром? Простой инкремент тут не выход... я уже думал над этим всем ))))) уже 6ой час сижу и думаю )))) |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Да мы тут просто, так... Это...
Не знаю, где там буква Г |
|||
|
||||
| Kirgston |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Ну ребят выручайте пожалуйста... чтото я наверно очень туплю... просто такая елементарщина .... а не могу решить... вот что сейчас получилось (не работает как надо)
int x,y,o_x,o_y; o_x=cur_pos.x; o_y=cur_pos.y; x=((Screen->Width/2)-o_x); y=((Screen->Height/2)-o_y); x=x/100; y=y/100; SetCursorPos( (Screen->Width/2)-x, (Screen->Height/2)-y); Заранее большое спасибо! Добавлено через 3 минуты и 6 секунд
ОМГ! Да вы батюшка шайтан!!! Добавлено через 10 минут и 7 секунд Кстати поделитесь пожалуйста что такое "-->" я его вообще впервые вижу .... чайник я одним словом |
||||
|
|||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
i-- декремент
>0 условие -------------------- |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Ага Ну... есть немного... Ну... Добавлено через 3 минуты и 43 секунды
Логика эта изучалась в 90-х годах прошлого века, когда проходили товарища по фамилии Брезенхем (надеюсь не попутал в написании фамилии)... Там было грустнее - так как вольности типа float не проходили, да и программили мы на МК-ххх (такие калькуляторы были)... А так - это обычная математика. |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Аааааа это декремент И и проверка на больше нуля ... хе хе а я уж подумал это "-->" как бы... отдельная функция...
Да что тут говорить ... =) чайник я и всё )))) хоть и с детства увлекаюсь, но начал заниматься программированием только год назад... начал с Делфи, а щас как месяц назад (может чуток меньше перешел на С++ ) ... да и проблемки у меня с математикой. Не дружу я с ней =) вот вроде логику компютера понимаю отлично, а вот незнание математики иногда подбивает сильно... А мы щас программим на MCS-51 ^_^ это ... не знаю... вроде до калькулятора дотягивает =) |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |