Russian Qt Forum
Сентябрь 30, 2024, 16:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Простенький редактор пиксельных сценок  (Прочитано 5186 раз)
enchantner
Гость
« : Май 29, 2012, 23:15 »

Пишу небольшой редактор пиксельных сценок, который потом планирует перерости в редактор уровней для игрушки. С помощью QGraphicsScene->addLine() нарисовал изометрическую сетку примерно такого вида: http://img442.imageshack.us/img442/7876/gridr.png

Хочу реализовать вот что - сделать курсор в виде такого же ромбика, только красного и чтобы он двигался ("прыгал") именно по этим квадратикам сообразно с движениями мышки. Кто играл в Fallout 1-2 - поймет, что я имею в виду.

Вопрос - как это реализовать? Повесить рисовалку на эвент движения мыши и каждый раз перерисовывать весь QGraphicsScene? Или есть более умный вариант? Код пишу на питоне, поэтому не привожу, но пойму и сишный, лишь бы подсказали.
Записан
V1KT0P
Гость
« Ответ #1 : Май 29, 2012, 23:52 »

Нет конечно, перерисовывай только изменяющиеся части.
Записан
enchantner
Гость
« Ответ #2 : Май 30, 2012, 00:19 »

И как это сделать? Можно небольшой пример кода? Я так понимаю, рисовать его все равно с помощью addLine(), а как обновлять только этот фрагмент?
Записан
andrew.k
Гость
« Ответ #3 : Май 30, 2012, 00:42 »

И как это сделать? Можно небольшой пример кода? Я так понимаю, рисовать его все равно с помощью addLine(), а как обновлять только этот фрагмент?
так ты ж ничего не рисуешь. Сцена сама рисует. Она и разберется, что надо обновлять, что нет.
Тебе надо определить в области какого ромба находится курсор.
Если текущий ромб изменился то посчитать координаты нового ромба и добавить цветной ромб используя третий параметр.
QGraphicsPolygonItem * QGraphicsScene::addPolygon ( const QPolygonF & polygon, const QPen & pen = QPen(), const QBrush & brush = QBrush() )
Сохранить указатель на айтем.
Теперь при переходе мыши на новый ромб, удалять старый айтем добавлять новый.
Рисованием будет заниматься сцена.
Записан
Bepec
Гость
« Ответ #4 : Май 30, 2012, 06:52 »

adnrew.k Дело глаголет. Тебе не нужно рисовать курсор мышки. Тебе нужно лишь определить, над каким ромбом находится курсор и перерисовать его Подмигивающий

Fallout. Война... Война никогда не меняется Веселый
Записан
V1KT0P
Гость
« Ответ #5 : Май 30, 2012, 08:06 »

Fallout. Война... Война никогда не меняется Веселый
Надо под программинг переиначить как-то. Типа такого: "С++. Программирование... Программирование никогда не меняется".
Записан
Bepec
Гость
« Ответ #6 : Май 30, 2012, 09:16 »

Не получится Подмигивающий Программирование то как раз меняется Подмигивающий
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #7 : Май 30, 2012, 11:52 »

Теперь при переходе мыши на новый ромб, удалять старый айтем добавлять новый.
Рисованием будет заниматься сцена.
Я бы даже не удалял и не создавал, а просто изменял бы координаты этого ромба.
Записан

Гугль в помощь
Bepec
Гость
« Ответ #8 : Май 30, 2012, 12:01 »

Угу. Правильное замечание Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.