Russian Qt Forum
Март 29, 2024, 09:01
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Отрендерить QFrame в QPixmap.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Отрендерить QFrame в QPixmap. (Прочитано 4924 раз)
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Отрендерить QFrame в QPixmap.
«
:
Декабрь 21, 2017, 00:25 »
Qt 5.6, правда надо сказать - Android версия. Надо схватить картинку c безрамочной QFrame в QPixmap. И потом на ней рисовать с помощью QPainter. Вроде бы всё просто. Внутри paintEvent() класса, который наследует QFrame:
Код:
QPixmap pm( size() );
pm.fill(Qt::black); // без этого появляется цветной шум
render( &pm );
QPainter p(&pm);
....
Нифига. Чёрное поле. Наличие цветного шума без очистки пиксмапа говорит о том, что render(&pm) ничего не делает, не изменяет содержимое картинки. На всякий случай попытался указать размеры:
Код:
render( &pm, QPoint(0,0), QRegion(0,0,width(),height()) );
Так вообще падает...
ЧЯДНТ?
Записан
2^7-1 == 127, задумайтесь...
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Отрендерить QFrame в QPixmap.
«
Ответ #1 :
Декабрь 21, 2017, 15:52 »
А так ?
Код
C++ (Qt)
QPainter
painter
(
&
pm
)
;
render
(
&
painter
)
;
Записан
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Отрендерить QFrame в QPixmap.
«
Ответ #2 :
Декабрь 21, 2017, 17:04 »
Цитата: Igors от Декабрь 21, 2017, 15:52
А так ?
Код
C++ (Qt)
QPainter
painter
(
&
pm
)
;
render
(
&
painter
)
;
именно рендерить painter, не pixmap? не пробовал, по логике это как-то... хотя...
Записан
2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Отрендерить QFrame в QPixmap.
«
Ответ #3 :
Декабрь 21, 2017, 21:08 »
Цитата: Igors от Декабрь 21, 2017, 15:52
А так ?
Код
C++ (Qt)
QPainter
painter
(
&
pm
)
;
render
(
&
painter
)
;
Код:
QPixmap pm( size() );
QPainter p(&pm);
render( &p );
Цитировать
(null):0 ((null)): QWidget::repaint: Recursive repaint detected
и потом падает. Очевидно render() вызывает paintEvent() - появляется рекурсия. А мне надо именно в paintEvent содержимое этого QFrame получить... Буду думать...
«
Последнее редактирование: Декабрь 21, 2017, 21:13 от Гурман
»
Записан
2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Отрендерить QFrame в QPixmap.
«
Ответ #4 :
Декабрь 21, 2017, 23:04 »
Всё. pm = grab(QRect(QPoint(0,0),size())); в другом методе перед перерисовкой - и нормально работает.
Записан
2^7-1 == 127, задумайтесь...
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Отрендерить QFrame в QPixmap.
«
Ответ #5 :
Декабрь 22, 2017, 12:40 »
grab медленный, см.
это
(первый абзац) если надо сграббить что-то у виджета.
Записан
ArchLinux x86_64 / Win10 64 bit
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Отрендерить QFrame в QPixmap.
«
Ответ #6 :
Декабрь 22, 2017, 12:51 »
Цитата: kuzulis от Декабрь 22, 2017, 12:40
grab медленный
пофик, мне надо с частотой 15 кадров в секунду грабить небольшой прямоугольник 140х110, скорости хватает даже на старом медленном планшете с Android
Записан
2^7-1 == 127, задумайтесь...
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...