Поиск:

Ответ в темуСоздание новой темы Создание опроса
> qt окошка с картинками 
:(
    Опции темы
revanatar
Дата 8.9.2012, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Доброе время суток. Есть задача сделать учебную программку строение машины. Это должно выглядеть  примерно таким образом:
На главном окне сама машина(изображение), но не простое, а кликабельное, то есть например навел на капот, он контуром обвелся, засветился и выскочило кроткое описание(так же со всеми нужными составляющими), далее кликнул и выскочило новое окошко, в котором уже двигатель крупным крупным планом итд.

Весь вопрос состоит в подходе к реализации: каким образом машина будет разбита на части в главном окне и как устроить подсветку при наведении?

ps: Извиняюсь, название темы должно было быть "qt окошки с картинками".

Это сообщение отредактировал(а) revanatar - 8.9.2012, 21:40
PM MAIL   Вверх
Amp
Дата 8.9.2012, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Неплохо бы выяснить некоторые тонкости. В частности могут ли контуры отдельных "деталей" машины быть грубо аппроксимированы прямоугольниками? Или нужна, так сказать, pixel perfect обработка событий мыши?
PM MAIL   Вверх
math64
Дата 9.9.2012, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



QGraphicsScene.
Машина и её детали - наследники QGraphicsPixmapItem. Картинки должны использовать прозрачные пиксели для определения границ изобржения.
PM   Вверх
revanatar
Дата 9.9.2012, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(Amp @ 8.9.2012,  23:20)
Неплохо бы выяснить некоторые тонкости. В частности могут ли контуры отдельных "деталей" машины быть грубо аппроксимированы прямоугольниками? Или нужна, так сказать, pixel perfect обработка событий мыши?

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

Добавлено через 2 минуты и 57 секунд
Вообще в идеале хотелось бы найти и увидеть реализацию простенькой проги такого типа, но это конечно на грани фантастики.
PM MAIL   Вверх
Amp
Дата 9.9.2012, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Обработку выделения можно еще сделать следующим образом. Будет дополнительное изображение с тем же автомобилем, в котором различные части залиты различными цветами. Оно нигде не рисуется, просто лежит в памяти, в буфере. В итоге обработка ввода сводится к получению цвета из этого изображения по заданным координатам мыши и соответствие этого цвета заданной детали (например #ff000 - капот, #00ff00 - колесо и т.п.). Способ видится удобным, так как единственное, что надо сделать - это раскрасить части изображения в графическом редакторе. Не нужно резать изображение, запоминать координаты кусков и засовывать это все в сценграф. Другой вопрос - как красиво и с наименьшим количеством кода написать подсветку в таком случае.
PM MAIL   Вверх
revanatar
Дата 9.9.2012, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Цитата(Amp @ 9.9.2012,  19:30)
Обработку выделения можно еще сделать следующим образом. Будет дополнительное изображение с тем же автомобилем, в котором различные части залиты различными цветами. Оно нигде не рисуется, просто лежит в памяти, в буфере. В итоге обработка ввода сводится к получению цвета из этого изображения по заданным координатам мыши и соответствие этого цвета заданной детали (например #ff000 - капот, #00ff00 - колесо и т.п.). Способ видится удобным, так как единственное, что надо сделать - это раскрасить части изображения в графическом редакторе. Не нужно резать изображение, запоминать координаты кусков и засовывать это все в сценграф. Другой вопрос - как красиво и с наименьшим количеством кода написать подсветку в таком случае.

Да, наибольшая проблема в реализации.

Добавлено через 9 минут и 49 секунд
Лично мне как-то легче представить что картинка непосредственно разбита на части, и для каждой части свое событие при наведении и клике. Другое дело что разбивать не знаю как: если в редакторе порезать на гифки - то как собрать потом в кучу в окне не знаю, если загружать целую - то как разбивать уже в программе не знаю. Может openGL как-то тут поможет упростить?

Это сообщение отредактировал(а) revanatar - 9.9.2012, 21:54
PM MAIL   Вверх
revanatar
Дата 9.9.2012, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 8.11.2011

Репутация: нет
Всего: нет



Вместо высветления краев отдельно можно просто повышать яркость на время пока под курсором.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.