crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Грамотная отрисовка рельефа
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 20.1.2009, 10:23
 
Цитата(AD @ 3.12.2008, 10:56) *
Тут почитал многое и понял, что эту функцию я могу использовать только в 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 реализрвана двойная буферизация автоматически т.к. что думаю особой необходимости рисовать на картинках нет. т.к. получится двойная работа по идее.
AD Дата 19.1.2009, 12:19
 
Цитата
Ну, я бы сделал примерно так:
1. При изменении размеров окна создал QImage с нужными размерами остальными параметрами.
2. На ей нарисовал всё, что нужно (можно в отдельном потоке).
3. По окончанию её отрисовки пнул перерисовку окна.
4. В paintEvent() выводил енту картинку, ежели она есть. :)

А можно хоть просто наброски куска кода, либо отсылка к примеру, где используется именно QImage! Даже не знаю как рисовать. Буду благодарен за помощь. Просто этот же прием (отрисовку на QImage), как я понял, еще и для другой цели можно использовать. Заранее спасибо!
Tonal Дата 16.12.2008, 11:45
 
Цитата
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 Дата 15.12.2008, 17:04
 
Цитата
Ну, я бы сделал примерно так:
1. При изменении размеров окна создал QImage с нужными размерами остальными параметрами.
2. На ей нарисовал всё, что нужно (можно в отдельном потоке).
3. По окончанию её отрисовки пнул перерисовку окна.
4. В paintEvent() выводил енту картинку, ежели она есть. :)

Подобный трюк пытался провернуть с QPixmap - не вышло. При этом при изменении размеров почему-то ломался. Почему - отдебажить не удалось. Сможете помочь разобраться? :)))) И как это сделать с QImage?
Litkevich Yuriy Дата 15.12.2008, 12:34
 
Цитата(Tonal @ 15.12.2008, 15:28) *
На ей нарисовал всё, что нужно (можно в отдельном потоке).
в этом-то и проблема, QImage находится в модуле QtGui, а его компоненты вроде как в отдельный поток совать нельзя.
Tonal Дата 15.12.2008, 12:28
  Ну, я бы сделал примерно так:
1. При изменении размеров окна создал QImage с нужными размерами остальными параметрами.
2. На ей нарисовал всё, что нужно (можно в отдельном потоке).
3. По окончанию её отрисовки пнул перерисовку окна.
4. В paintEvent() выводил енту картинку, ежели она есть. :)
Litkevich Yuriy Дата 8.12.2008, 18:52
 
Цитата(AD @ 8.12.2008, 21:47) *
Мозги уже плавятся....
у меня от своей работы так же, конец года надо проект заказчику здать, завтра пол шестого утра выезд на объект. Так, что я не помошник.
AD Дата 8.12.2008, 18:47
 
Цитата(Litkevich Yuriy @ 8.12.2008, 17:27) *
я вот тоже думаю, что нужно в главном потоке. Надо просто хорошенько подумать, в чем проблема.

Да я и не спорю. Просто уже все мозги сломал, как сделать так, чтобы летало! Избавиться от рекурсии(но что-то не получается догадаться, как это безобразие циклом сделать) :( Убрать лишние проверки (тогда какие?) :unsure:
Сможете помочь? Мозги уже плавятся....
Litkevich Yuriy Дата 8.12.2008, 17:27
 
Цитата(kuler @ 8.12.2008, 19:46) *
рисуют в главном потоке - и ничего, летает.
я вот тоже думаю, что нужно в главном потоке. Надо просто хорошенько подумать, в чем проблема.
kuler Дата 8.12.2008, 16:46
  нужен либо маршалинг (я не знаю как его сделать). А вообще к примеру 3Д графику рисуют в главном потоке - и ничего, летает. А там посложнее будет
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 2:30