crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> окно 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, 3:29) *
Так вот, могу я при помощи Qt увеличить размер изображения, при этом не потеряв качества ?!
при увеличении размера растрового изображения, ты в любом случае не сохранишь качество.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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-рисованием я честно говоря мало знаком. Буду признателен за любую помощь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 10.1.2025, 19:07