окно QGLWidget сохранить в файл изображения, dump |
Здравствуйте, гость ( Вход | Регистрация )
окно QGLWidget сохранить в файл изображения, dump |
JuryS1806 |
23.4.2010, 23:23
Сообщение
#1
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Всем доброго времени суток!
Хочу спросить, может быть кто-нибудь уже сталкивался с подобным !? В данный момент я работаю над программой и сохраняю все объекты сцены с модулем GL2PS. Это супер удобно сохранять графику в PostScript, к тому же с помощью pstoedit, libemf и wine можно творить чудеса и получать на выходе 52 формата сохраненных файлов с любым качеством, в том числе и SVG. Проблема только одна: современная версия GL2PS не поддерживает текстурирование и вряд ли когда будет его поддерживать. И теперь собственно вопрос: как я могу сохранить изображение текущего виджета , а в данном случае QGLWidget в какой-нибудь графический формат. Лучше всего конечно же SVG. То есть теоретически я могу сделать принтскрин окна, выделить нужную область, которую занимает окно виджета, обрезать ненужное и получить файл с картинкой, но это как-то нерационально. Может быть есть какая-то фишка для dump-а текущего виджета ? Заранее благодарен. |
|
|
Litkevich Yuriy |
23.4.2010, 23:24
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
grabWidget?
|
|
|
JuryS1806 |
23.4.2010, 23:56
Сообщение
#3
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Добрый вечер, Юрий!
QPixmap::grabWidget Почему то не может выполнить, в консоли ошибка: QGLContext::makeCurrent(): Failed. QGLContext::makeCurrent(): Failed. *Xw_Error_4/2*code 177/'GLXBadContext' from Xw_error_handler routine Сообщение отредактировал JuryS1806 - 24.4.2010, 0:01 |
|
|
JuryS1806 |
24.4.2010, 23:29
Сообщение
#4
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Судя по исходникам Qt при пропытке GrabWindow GLWidget - окна использует свой алгоритм скриншота, т.е. он как и GL2PS зачитывает все объекты сцены ! и при этом с текстурированными объектами. Но только одна незадача, не может он считать их, что не делай.
кстати, XW_Window и XWNT_Window также могут "грабить" текущее изображение, но разрешения изображения будет таким же , как и размер виджета. Так вот, могу я при помощи Qt увеличить размер изображения, при этом не потеряв качества ?! формат изначальный - BMP или XWD. Спасибо за участие в решение проблемы |
|
|
Litkevich Yuriy |
25.4.2010, 0:37
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
JuryS1806 |
25.4.2010, 22:43
Сообщение
#6
|
Студент Группа: Участник Сообщений: 93 Регистрация: 21.10.2009 Из: Нижний Новгород Пользователь №: 1168 Спасибо сказали: 9 раз(а) Репутация: 0 |
Все оказывается еще сложнее. Вот почему бы не использовать отличный формат PostScript или EMF/WMF. И качество не теряешь, хоть со спичечный короб печатай, хоть с 9 этажный дом......
А еще я думаю, может быть стандартными средствами QT я могу собрать изображение из нескольких дампов ? Например, разобью текущую сцену на 6 прямоугольников, соответственно, .размер их будет соответствовать разрешению экрана, далее делаю 6 снимков, создаю пиксмап в 6 раз больше стандартного значения экрана и объединяю в одно крутое изображение... Или это бред, такой алгоритм. Так и придется в OpenGL драйвере расковыривать и в QT-grabere ./ЭТО ЖУТЬ какие там исходники/ год разбиратся. если гимпом все это делать, то вроде бы как все понятно, а вот с QT-рисованием я честно говоря мало знаком. Буду признателен за любую помощь. |
|
|
Текстовая версия | Сейчас: 10.1.2025, 19:03 |