Название: Отрендерить QFrame в QPixmap. Отправлено: Гурман от Декабрь 21, 2017, 00:25 Qt 5.6, правда надо сказать - Android версия. Надо схватить картинку c безрамочной QFrame в QPixmap. И потом на ней рисовать с помощью QPainter. Вроде бы всё просто. Внутри paintEvent() класса, который наследует QFrame:
Код: QPixmap pm( size() ); Нифига. Чёрное поле. Наличие цветного шума без очистки пиксмапа говорит о том, что render(&pm) ничего не делает, не изменяет содержимое картинки. На всякий случай попытался указать размеры: Код: render( &pm, QPoint(0,0), QRegion(0,0,width(),height()) ); Так вообще падает... :-\ ЧЯДНТ? Название: Re: Отрендерить QFrame в QPixmap. Отправлено: Igors от Декабрь 21, 2017, 15:52 А так ?
Код
Название: Re: Отрендерить QFrame в QPixmap. Отправлено: Гурман от Декабрь 21, 2017, 17:04 А так ? Код
именно рендерить painter, не pixmap? не пробовал, по логике это как-то... хотя... Название: Re: Отрендерить QFrame в QPixmap. Отправлено: Гурман от Декабрь 21, 2017, 21:08 А так ? Код
Код: QPixmap pm( size() ); Цитировать (null):0 ((null)): QWidget::repaint: Recursive repaint detected и потом падает. Очевидно render() вызывает paintEvent() - появляется рекурсия. А мне надо именно в paintEvent содержимое этого QFrame получить... Буду думать... Название: Re: Отрендерить QFrame в QPixmap. Отправлено: Гурман от Декабрь 21, 2017, 23:04 Всё. pm = grab(QRect(QPoint(0,0),size())); в другом методе перед перерисовкой - и нормально работает.
Название: Re: Отрендерить QFrame в QPixmap. Отправлено: kuzulis от Декабрь 22, 2017, 12:40 grab медленный, см. это (http://www.prog.org.ru/topic_31796_0.html) (первый абзац) если надо сграббить что-то у виджета.
Название: Re: Отрендерить QFrame в QPixmap. Отправлено: Гурман от Декабрь 22, 2017, 12:51 grab медленный пофик, мне надо с частотой 15 кадров в секунду грабить небольшой прямоугольник 140х110, скорости хватает даже на старом медленном планшете с Android |