Грамотная отрисовка рельефа, что-то не получается |
Здравствуйте, гость ( Вход | Регистрация )
Грамотная отрисовка рельефа, что-то не получается |
Tonal |
15.12.2008, 12:28
Сообщение
#21
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Ну, я бы сделал примерно так:
1. При изменении размеров окна создал QImage с нужными размерами остальными параметрами. 2. На ей нарисовал всё, что нужно (можно в отдельном потоке). 3. По окончанию её отрисовки пнул перерисовку окна. 4. В paintEvent() выводил енту картинку, ежели она есть. |
|
|
Litkevich Yuriy |
15.12.2008, 12:34
Сообщение
#22
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AD |
15.12.2008, 17:04
Сообщение
#23
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Цитата Ну, я бы сделал примерно так: 1. При изменении размеров окна создал QImage с нужными размерами остальными параметрами. 2. На ей нарисовал всё, что нужно (можно в отдельном потоке). 3. По окончанию её отрисовки пнул перерисовку окна. 4. В paintEvent() выводил енту картинку, ежели она есть. Подобный трюк пытался провернуть с QPixmap - не вышло. При этом при изменении размеров почему-то ломался. Почему - отдебажить не удалось. Сможете помочь разобраться? ))) И как это сделать с QImage? |
|
|
Tonal |
16.12.2008, 11:45
Сообщение
#24
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Цитата Because QImage is a QPaintDevice subclass, QPainter can be used to draw directly onto images. When using QPainter on a QImage, the painting can be performed in another thread than the current GUI thread.
|
|
|
AD |
19.1.2009, 12:19
Сообщение
#25
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Цитата Ну, я бы сделал примерно так: 1. При изменении размеров окна создал QImage с нужными размерами остальными параметрами. 2. На ей нарисовал всё, что нужно (можно в отдельном потоке). 3. По окончанию её отрисовки пнул перерисовку окна. 4. В paintEvent() выводил енту картинку, ежели она есть. А можно хоть просто наброски куска кода, либо отсылка к примеру, где используется именно QImage! Даже не знаю как рисовать. Буду благодарен за помощь. Просто этот же прием (отрисовку на QImage), как я понял, еще и для другой цели можно использовать. Заранее спасибо! |
|
|
kwisp |
20.1.2009, 10:23
Сообщение
#26
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Тут почитал многое и понял, что эту функцию я могу использовать только в paintEvent()! Но еще кое-что заметил и понял, что по сути ее следует вызывать, только при изменении размеров окна. её это какую функцию? вот в примере %QTDIR%examples\painting\painterpaths\ при изменении свойств объектов вызывается update(). в описании слота написано: Цитата Updates the widget unless updates are disabled or the widget is hidden. This function does not cause an immediate repaint; instead it schedules a paint event for processing when Qt returns to the main event loop. This permits Qt to optimize for more speed and less flicker than a call to repaint() does. Calling update() several times normally results in just one paintEvent() call. мне тоже скоро предстоит рисовать думаю попробовать этот метод. Изменение свойств объектов рисования, размеров угла поворота колличества линий и т.д. потом update() кстати можно лишь того rect() который нужно рисовать заново. как пишут, в qt4 реализрвана двойная буферизация автоматически т.к. что думаю особой необходимости рисовать на картинках нет. т.к. получится двойная работа по идее. |
|
|
Текстовая версия | Сейчас: 3.1.2025, 6:05 |