![]() |
|
![]() ![]() ![]() |
|
revanatar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
Доброе время суток. Есть задача сделать учебную программку строение машины. Это должно выглядеть примерно таким образом:
На главном окне сама машина(изображение), но не простое, а кликабельное, то есть например навел на капот, он контуром обвелся, засветился и выскочило кроткое описание(так же со всеми нужными составляющими), далее кликнул и выскочило новое окошко, в котором уже двигатель крупным крупным планом итд. Весь вопрос состоит в подходе к реализации: каким образом машина будет разбита на части в главном окне и как устроить подсветку при наведении? ps: Извиняюсь, название темы должно было быть "qt окошки с картинками". Это сообщение отредактировал(а) revanatar - 8.9.2012, 21:40 |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Неплохо бы выяснить некоторые тонкости. В частности могут ли контуры отдельных "деталей" машины быть грубо аппроксимированы прямоугольниками? Или нужна, так сказать, pixel perfect обработка событий мыши?
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
QGraphicsScene.
Машина и её детали - наследники QGraphicsPixmapItem. Картинки должны использовать прозрачные пиксели для определения границ изобржения. |
|||
|
||||
revanatar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
Так как рисунок очень большим не будет желательно как можно лучше в качестве делать, с другой стороны есть вариант сделать сноски линиями как на чертежах и уже подпись сноски сделать ссылкой на окно с выбранной темой. Сноски тоже не представляю как сделать. Добавлено через 2 минуты и 57 секунд Вообще в идеале хотелось бы найти и увидеть реализацию простенькой проги такого типа, но это конечно на грани фантастики. |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Обработку выделения можно еще сделать следующим образом. Будет дополнительное изображение с тем же автомобилем, в котором различные части залиты различными цветами. Оно нигде не рисуется, просто лежит в памяти, в буфере. В итоге обработка ввода сводится к получению цвета из этого изображения по заданным координатам мыши и соответствие этого цвета заданной детали (например #ff000 - капот, #00ff00 - колесо и т.п.). Способ видится удобным, так как единственное, что надо сделать - это раскрасить части изображения в графическом редакторе. Не нужно резать изображение, запоминать координаты кусков и засовывать это все в сценграф. Другой вопрос - как красиво и с наименьшим количеством кода написать подсветку в таком случае.
|
|||
|
||||
revanatar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
Да, наибольшая проблема в реализации. Добавлено через 9 минут и 49 секунд Лично мне как-то легче представить что картинка непосредственно разбита на части, и для каждой части свое событие при наведении и клике. Другое дело что разбивать не знаю как: если в редакторе порезать на гифки - то как собрать потом в кучу в окне не знаю, если загружать целую - то как разбивать уже в программе не знаю. Может openGL как-то тут поможет упростить? Это сообщение отредактировал(а) revanatar - 9.9.2012, 21:54 |
|||
|
||||
revanatar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 8.11.2011 Репутация: нет Всего: нет |
Вместо высветления краев отдельно можно просто повышать яркость на время пока под курсором.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |