![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Obey-Kun |
![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 96 Регистрация: 24.3.2010 Пользователь №: 1556 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
Создаю программу для моделирования изменения энтальпийного (температурного, грубо говоря) поля при кондуктивной теплопередачи в массиве грунтов. Можете считать, для простоты понимания, что это CAD.
Там сцена и вью. В сцене лежит много-много кирпичиков. Кирпичики надо иногда, например, выделять. Для этого используется прямоугольное выделение. Прямоугольное выделение представлено как виджет, рисующийся во вьюпорте вью. Проблема в том, что при изменении геометрии выделения (размеров или положения этого виджета), пускается paintEvent для области, являющейся окаймляющей старую и новую геометрию. При этом перерисовываются все кирпичики, лежащие и лежавшие только что под этим виджетом. А это долго, если их много (заметно от 1500). Можно ли как-нибудь самому задавать QRegion, в котором должен пускаться paintEvent при resize/move? Вот скриншот (для вашего вдохновения): тыц Сообщение отредактировал Obey-Kun - 23.11.2010, 2:00 |
|
|
ufna |
![]()
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
По отсечке региона сейчас не подскажу, голова совсем не работает. Просто вопрос - а почему было выбрано именно GV?
|
|
|
Obey-Kun |
![]()
Сообщение
#3
|
![]() Студент ![]() Группа: Участник Сообщений: 96 Регистрация: 24.3.2010 Пользователь №: 1556 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
А что вы бы использовали? По сути я работаю с набором кирпичиков, каждый кирпичик обладает геометрией и всякими свойствами (температура, теполоёмкость, ...). Использование связки Scene-View наиболее логично. Или я вопроса не понял?
Вот что нашёл -- http://lists.trolltech.com/qt-interest/200...ead00848-0.html Но тоже уже голова не варит, потом почитаю. |
|
|
ufna |
![]()
Сообщение
#4
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Да вручную QPainter'ом отрисовку, с кучей мелких элементов в GV посложнее будет в плане оптимизации скорости.
|
|
|
Obey-Kun |
![]()
Сообщение
#5
|
![]() Студент ![]() Группа: Участник Сообщений: 96 Регистрация: 24.3.2010 Пользователь №: 1556 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
Кирпичики в сцене находятся. Выделение -- во view. Но вы мне только что идею подкинули. Ведь действительно лучше хранить и инструменты в сцене тоже, ведь это автоматически избавит от некоторых проблем оптимизации перерисовки. Только есть проблема с тем, что текст и ушки, за которые мы цепляем инструмент, должны рисоваться вне масштаба. Как этого добиться?
|
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Obey-Kun, такая картинка для отрисовки на самом завалящем калькуляторе - фигня-задача. Сталкивались, знаем. Вывод - у тебя что-то неоптимально сделано
![]() Уж не знаю, что там за сцена такая (не сталкивался) , но когда содержишь свой массив/вектор/мапу с объектами, онм рисуются очень живенько. Ну, тут тоже, смотря как алгоритм сделаешь Сообщение отредактировал Алексей1153 - 23.11.2010, 8:30 |
|
|
Obey-Kun |
![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Участник Сообщений: 96 Регистрация: 24.3.2010 Пользователь №: 1556 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
Всё там хорошо с отрисовкой кирпичиков. QGraphicsRectItem отрисовывается не шибко быстрее, чем мои кирпичики.
|
|
|
Алексей1153 |
![]()
Сообщение
#8
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Я говорю про ручную отрисовку, без всяких вспомогательных классов
![]() |
|
|
Obey-Kun |
![]()
Сообщение
#9
|
![]() Студент ![]() Группа: Участник Сообщений: 96 Регистрация: 24.3.2010 Пользователь №: 1556 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
Тут речь не о том совсем, а о QGraphicsScene+QGRaphicsView.
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 22.9.2023, 18:15 |