Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: enchantner от Май 29, 2012, 23:15



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

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

Вопрос - как это реализовать? Повесить рисовалку на эвент движения мыши и каждый раз перерисовывать весь QGraphicsScene? Или есть более умный вариант? Код пишу на питоне, поэтому не привожу, но пойму и сишный, лишь бы подсказали.


Название: Re: Простенький редактор пиксельных сценок
Отправлено: V1KT0P от Май 29, 2012, 23:52
Нет конечно, перерисовывай только изменяющиеся части.


Название: Re: Простенький редактор пиксельных сценок
Отправлено: enchantner от Май 30, 2012, 00:19
И как это сделать? Можно небольшой пример кода? Я так понимаю, рисовать его все равно с помощью addLine(), а как обновлять только этот фрагмент?


Название: Re: Простенький редактор пиксельных сценок
Отправлено: andrew.k от Май 30, 2012, 00:42
И как это сделать? Можно небольшой пример кода? Я так понимаю, рисовать его все равно с помощью addLine(), а как обновлять только этот фрагмент?
так ты ж ничего не рисуешь. Сцена сама рисует. Она и разберется, что надо обновлять, что нет.
Тебе надо определить в области какого ромба находится курсор.
Если текущий ромб изменился то посчитать координаты нового ромба и добавить цветной ромб используя третий параметр.
QGraphicsPolygonItem * QGraphicsScene::addPolygon ( const QPolygonF & polygon, const QPen & pen = QPen(), const QBrush & brush = QBrush() )
Сохранить указатель на айтем.
Теперь при переходе мыши на новый ромб, удалять старый айтем добавлять новый.
Рисованием будет заниматься сцена.


Название: Re: Простенький редактор пиксельных сценок
Отправлено: Bepec от Май 30, 2012, 06:52
adnrew.k Дело глаголет. Тебе не нужно рисовать курсор мышки. Тебе нужно лишь определить, над каким ромбом находится курсор и перерисовать его ;)

Fallout. Война... Война никогда не меняется :D


Название: Re: Простенький редактор пиксельных сценок
Отправлено: V1KT0P от Май 30, 2012, 08:06
Fallout. Война... Война никогда не меняется :D
Надо под программинг переиначить как-то. Типа такого: "С++. Программирование... Программирование никогда не меняется".


Название: Re: Простенький редактор пиксельных сценок
Отправлено: Bepec от Май 30, 2012, 09:16
Не получится ;) Программирование то как раз меняется ;)


Название: Re: Простенький редактор пиксельных сценок
Отправлено: navrocky от Май 30, 2012, 11:52
Теперь при переходе мыши на новый ромб, удалять старый айтем добавлять новый.
Рисованием будет заниматься сцена.
Я бы даже не удалял и не создавал, а просто изменял бы координаты этого ромба.


Название: Re: Простенький редактор пиксельных сценок
Отправлено: Bepec от Май 30, 2012, 12:01
Угу. Правильное замечание :)