Грамотная отрисовка рельефа, что-то не получается |
Здравствуйте, гость ( Вход | Регистрация )
Грамотная отрисовка рельефа, что-то не получается |
AD |
2.12.2008, 12:02
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Запутался, не знаю как решить следующую проблему. Необходимо под графиком, который уже нарисован нарисовать рельеф. Отрисовка рельефа должна происходить всего один раз. Т.е. при рисовании в методе paintEvent() естественно эта штуковина нещадно грузит систему. Делаю вызов этой функции в другом месте, но тогда вообще ничего не рисуется (возможно, потому что использую QPainter для получения цвета "кисти" и "карандаша"). Помогите, пожалуйста.
Код самого рисования правилен, вопрос в том, как заставить рисовать не вызывая данную функцию в paintEvent()?
В итоге получается картинка, подобная этой (такая картинка и должна получаться):[attachment=333:relief.JPG] |
|
|
AD |
2.12.2008, 13:04
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Кто-нибудь сможет помочь? Вопрос состоит в том, где правильно использовать функцию drawTrackRilief() или же как сделать так, чтобы не использовать QPainter и отрисовывать другими средствами. Буду благодарен за любую помощь.
|
|
|
AD |
3.12.2008, 10:56
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Тут почитал многое и понял, что эту функцию я могу использовать только в paintEvent()! Но еще кое-что заметил и понял, что по сути ее следует вызывать, только при изменении размеров окна. Вопрос такой можно ли сделать так, чтобы один и тот же QPainter painter в одних функциях рисовал сразу на экран, а в других рисовал бы в битмап, который бы перерисовывался при изменении размеров. Кто хочет помочь, прошу помогите пожалуйста.
Вот код отрисовки: source Буду благодарен за любой совет и помощь. Очень прошу хоть кого-нибудь откликнуться и постараться помочь в столь нетривиальной задачке! |
|
|
Litkevich Yuriy |
3.12.2008, 11:27
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AD |
3.12.2008, 11:34
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
Litkevich Yuriy |
3.12.2008, 12:33
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AD |
3.12.2008, 12:50
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
AD |
3.12.2008, 17:26
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Дошло как можно это безобразие организовать - через дополнительный параллельный поток. Ведь в потоке я имею право использовать QPainter? Если что, поможете? Естественно, я буду приводить код...
Один из первых вопрос по потокам такой - можно ли использовать в потоке указатель на QPainter, если он объявлен в главном потоке. Если нельзя, то как сделать можно? Буду благодарен за помощь! Сообщение отредактировал AD - 3.12.2008, 17:52 |
|
|
AD |
5.12.2008, 12:54
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Перенес в доп. поток. Вот так это все выглядит:
relief
Но рельеф не рисуется. Помогите, пожалуйста. Как заставить отрисовываться? Что я не так делаю? Сообщение отредактировал AD - 5.12.2008, 14:02 |
|
|
kuler |
5.12.2008, 16:25
Сообщение
#10
|
Танцор диско Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1 |
а почему painter можно использовать в другом потоке?
|
|
|
Текстовая версия | Сейчас: 3.1.2025, 6:01 |