Russian Qt Forum
Ноябрь 23, 2024, 20:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] BitBlt - а как на Qt?  (Прочитано 8146 раз)
Alex_C
Гость
« : Март 26, 2012, 16:56 »

Для быстрого вывода графики в своей программе использую ф-цию WinAPI BitBlt. Правильно ли я понимаю, что в Qt вместо нее, если хочу получить кросс-платформенное приложение, нужно использовать QPainter? Как у него со скоростью вывода?
« Последнее редактирование: Март 27, 2012, 10:24 от Alex_C » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Март 26, 2012, 17:05 »

В QPainter включен double-buffering, что естественно сказывается на производительности.
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Март 26, 2012, 21:11 »

Для быстрого вывода графики в своей программе использую ф-цию WinAPI BitBlt. Правильно ли я понимаю, что в Qt вместо нее, если хочу получить кросс-платформенное приложение, нужно использовать QPainter? Как у него со скоростью вывода?
Хреново, особенно с текстом
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Март 27, 2012, 07:42 »

Для быстрого вывода графики в своей программе использую ф-цию WinAPI BitBlt. Правильно ли я понимаю, что в Qt вместо нее, если хочу получить кросс-платформенное приложение, нужно использовать QPainter? Как у него со скоростью вывода?
Хреново, особенно с текстом
А причём здесь вывод текста и bitblt()?
Записан

Qt 5.11/4.8.7 (X11/Win)
Alex_C
Гость
« Ответ #4 : Март 27, 2012, 08:24 »

А причём здесь вывод текста и bitblt()?

Потому как для быстрого вывода текста без мелькания сначала его TextOut на Bitmap в памяти, а затем BitBlt на нужный канвас.... Плохо это, что хреново. Хотя с другой стороны double-buffering и подразумевает сначала отрисовку в памяти, а затем уже и вывод картинки на экран.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #5 : Март 27, 2012, 09:09 »

сначала его TextOut на Bitmap в памяти, а затем BitBlt на нужный канвас...
Ну так никто не запрещает рисовать в QPixmap, а потом выводить drawPixmap.
Mandelbrot Example посмотрите.
Записан
Alex_C
Гость
« Ответ #6 : Март 27, 2012, 10:24 »

Ну так никто не запрещает рисовать в QPixmap, а потом выводить drawPixmap.
Mandelbrot Example посмотрите.

Отличный пример! Вопрос снят! Большое спасибо!
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Март 27, 2012, 10:27 »

Интересно сравнить скорость (Qt) вывода "просто на экран" и "через QPixmap"
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Март 27, 2012, 11:22 »

Интересно сравнить скорость (Qt) вывода "просто на экран" и "через QPixmap"
А не так-то просто это сделать, т.к. double-buffering можно отключить только на X11 (см. Qt::WA_PaintOnScreen).
2 Alex_C:
Qt всё уже за тебя сделала)
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Март 27, 2012, 11:34 »

А не так-то просто это сделать, т.к. double-buffering можно отключить только на X11 (см. Qt::WA_PaintOnScreen).
Иногда надо "тупенько"  Улыбающийся Просто замеряем с/без QPixmap, с точки зрения пользователя, не вдаваясь ни в какие нюансы. На моей платформе (OSX) через QPixmap намного медленнее (не знаю почему)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 22.