|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.11.2016, 21:08 | #1 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Перемещение объекта мышкой OpenGl
Добрый вечер. Начала изучать OpenGL при выполнении задания - сделать пасьянс. В программе просто должны выводиться карты как в пасьянсе и перемещаться по нажатию мышки в одну из 4 колод. Если с выводом изображений карт +- понятно, то с перемещением ничего не понятно. Для начала открыла урок, в котором происходит просто перемещение объекта за мышкой. Сразу же возник следующий вопрос:
1. Как одно изображение карты из массива изображений карт-сделать объектом, который будет перемещаться вслед за мышкой и оставаться на том месте, "куда мышь привела этот объект". Код Код:
|
09.11.2016, 23:00 | #2 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Не подскажете?(
|
10.11.2016, 21:29 | #3 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Вы очень мало выводите отладочной информации. Если нет возможности выводить в консоль, то сделайте текстовое поле вывода с прокруткой, чтобы видеть в какой последовательности вызываются события MousePressed и т.д. Вам нужны обработчики: MouseDown, MouseUp (или MouseRelease), MouseMove. Пока что нужно выводите только текст, чтобы разобраться с обработчиками. Допустим, вы нажали на кнопку мыши и видите в окне вывода: MouseDown + координаты клика. Дальше вы, не отпуская кнопку мыши двигаете её и видите в выводе MouseMove + координаты курсора. Потом вы отпускаете левую кнопку мыши и видите срабатывание обработчика MouseRelease. Когда в текстовом виде будет работать так как нужно по логике, то можно начать рисовать.
Последний раз редактировалось 8Observer8; 10.11.2016 в 21:32. |
14.11.2016, 06:47 | #4 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,885
|
Ну, для озвученной задачи в базовом виде нужен только флаг (булева переменная), что мышка была кликнута (в функции клика мыши меняем этот флаг), если флаг был включен, то обновляем координаты:
Код:
Вводить для каждого графического объекта класс, где будет массив точек, флаг что тащим объект и прочие нужные вещи (например, цвет). Потом прописываем массив таких объектов, один указатель на такой объект будет являть текущий объект, в функции клика анализируем какой объект был под мышкой (обычно решают задачу по алгоритму точка в многоугольнике, но для случая наложения объектов друг на друга надо будет ещё сохранять глубину, для случая невыпуклых многоугольников тоже появляются свои тонкости), и ему ставим флаг на таскание, при движении мыши обновляя ему координаты (но не через прямое присвоение координат, а учитывая место , где внутри объекта кликнули, иначе при захвате объект будет дергаться). В общем, тут много моментов, и каждый надо рассматривать отдельно, просто взять заготовку мало. |
14.11.2016, 17:01 | #5 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Спасибо за ответы. Пока есть структура , которая хранит информацию про карты, вывод карт на экран и попытка как-то переместить хотя бы одну карту. Хочу сперва разобраться с перемещением одной карты.
Код:
|
15.11.2016, 17:05 | #6 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Немного продвинулась дальше. Есть структура BALL ,которая хранит изображение, метод Dispay1 , который выводит изображение карты. Могли бы ли вы, мне подсказать, как при перемещении карты убрать это "домино" ,как на скрине, и каким образом можно удалить карту с начального места, с которого она была перемещена. Спасибо
Код:
|
15.11.2016, 17:38 | #7 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Могу подсказать, как убрать шлейф за картой. Нужно добавить перед перерисовкой объектов:
Код:
|
15.11.2016, 18:20 | #8 |
Форумчанин
Регистрация: 15.12.2013
Сообщений: 414
|
Добавила в эту функцию
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перемещение объекта OpenGl | bosyak | Мультимедиа в Delphi | 7 | 06.11.2015 05:38 |
Перемещение нарисованного объекта | Mr.Dmitry | Общие вопросы Delphi | 22 | 09.10.2015 16:59 |
Передвижение объекта мышкой | Яр|/||< (^_^) | Qt и кроссплатформенное программирование С/С++ | 3 | 26.06.2012 01:10 |
Естьли программа, определяющая класс объекта под мышкой? | TwiX | Win Api | 4 | 01.08.2009 17:13 |