crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Отрисовка виджета в QPixmap
giker
  опции профиля:
сообщение 1.11.2010, 14:28
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 18.5.2010
Пользователь №: 1731

Спасибо сказали: 0 раз(а)




Репутация:   0  


Итак после долгих экспериментов, задача почти решилась - фаил заполняет нечто, код вот такой:

QGraphicsScene *scene = new QGraphicsScene(0, 0, qwtPlot->width(), qwtPlot->height());
QGraphicsProxyWidget *widget = scene->addWidget(qwtPlot);
QPixmap pixmap(300, 300);
QPainter painter(&pixmap);
painter.setRenderHint(QPainter::Antialiasing);
QGraphicsView *view = new QGraphicsView();
view->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
qwtPlot->repaint();
view->render(&painter, QRectF(), QRect(), Qt::IgnoreAspectRatio);
pixmap.save(QApplication::applicationDirPath() + "/image.png", "PNG"))


но в файле получается не разлинованая декартова система координат на сером фоне как должно быть, а какие-то сине-фиолетовые полосы. На сколько я понимаю неправильно происходит чтение со сцены в QPixmap. Подскажите пожалуйста в чем дело.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.11.2010, 15:20
Сообщение #12


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


я так понимаю, что продвижение - это
QPixmap pixmap(300, 300);
? :)

я домой приду, попробую. Это через 3-4 часика
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
giker
  опции профиля:
сообщение 3.11.2010, 9:58
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 18.5.2010
Пользователь №: 1731

Спасибо сказали: 0 раз(а)




Репутация:   0  


Задача так и не решилась - то что я принял за неправильное отображение моего рисунка, оказалось просто мусором при создания pixmap (кстати странно что он не создается просто черным, в каким-то серобурмальновым в полоску). Интересует вот какой вопрос: Возможно ли в принципе отрисовать в файл через QGraphicScene, виджет уже отрисованный на форме или нет?
Решил пойти другим путем: QwtPlot умеет сохранять свои графики в svg формат через QSvgGenerator, мне нужно вставить этот SVG-рисунок в HTML для последующей конвертации его в PDF. В связи с этим возникает вопрос: где хранятся данные svg-картинки в QsvgGenerator. Или нужно сохранить ее файл, а потом вставлять его в HTML? Если да то как: текстом или массивом данных из прочитанного файла?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.11.2010, 10:11
Сообщение #14


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


блин, я и забыл совсем покопаться, из головы вылетело ((
giker, напомни мне вечером, что ли...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 3.11.2010, 10:15
Сообщение #15


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(giker @ 29.10.2010, 21:39) *
Добрый день. Помогите пожалуйста. Есть виджет (qwtPlot) который надо отрисовывать в QPixmap используя QGraphicsView. Для отрисовки использую такой

А чем просто QPixmap QPixmap::grabWidget ( QWidget * widget, const QRect & rectangle ) [static] вам не подходит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
giker
  опции профиля:
сообщение 3.11.2010, 20:42
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 18.5.2010
Пользователь №: 1731

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не подходит потому что зависит от текущего состояния - размера виджета. Например если пользователь изменит размер родительского окна, соответственно изменяться размеры и дочерних виджетов. Мне же нужно отрисовывать виджет в картинку заданных размеров, желательно с таким же качеством как на экране.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.11.2010, 20:55
Сообщение #17


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


giker, а ты палитру, кстати, делаешь такую же, как у того, кто рендерит ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
giker
  опции профиля:
сообщение 4.11.2010, 14:36
Сообщение #18


Студент
*

Группа: Участник
Сообщений: 26
Регистрация: 18.5.2010
Пользователь №: 1731

Спасибо сказали: 0 раз(а)




Репутация:   0  


Палитру вообще не выставляю. Где, как и у кого она выставляется?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 4.11.2010, 15:05
Сообщение #19


фрилансер
******

Группа: Участник
Сообщений: 2928
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


хм, а фиг знает. Я нашёл только как прочитать битность и количество цветов - depth() и colorCount ()

кстати, не игнорируй вот это замечание
Цитата(igor_bogomolov @ 3.11.2010, 12:15) *
А чем просто QPixmap QPixmap::grabWidget ( QWidget * widget, const QRect & rectangle ) [static] вам не подходит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.10.2021, 1:15