![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
giker |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день. Помогите пожалуйста. Есть виджет (qwtPlot) который надо отрисовывать в QPixmap используя QGraphicsView. Для отрисовки использую такой код:
В результате на диске появляется файл, по виду нужного размера, но абсолютно черный. Что в моем коде неправильно, или здесь проблема в специфике qwt? Спасибо. |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
попробуй убрать
painter.begin(&pixmap); либо же не указывай в конструкторе адрес девайса (там begin вызовется) вызов end тоже можно оставить на совесть деструктора:
|
|
|
giker |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ни каких изменений - опять абсолютно черный файл.
|
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
хорошо. Делаем чистый эксперимент:
зелёный прямоугольничек есть ? |
|
|
giker |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Есть.
|
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
giker, значит что ? По умолчанию девайс залит чёрным цветом. Поэтому не видно, что ты на нём нарисовал чёрными линиями/буквами
Сообщение отредактировал Алексей1153 - 30.10.2010, 8:54 |
|
|
giker |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Хорошо, тогда по идее, если сначала залить весь pixmap белым цветом, а потом отрисовать виджет, то мы должны его увидеть:
Но в результате имеем только картинку полностью залитую белым цветом. Но у виджета кроме черных линий есть еще и фон совпадающий с цветом окна, он же дожен отрисоваться? Значит не правильно отрабатывает view->render(&painter)? |
|
|
Алексей1153 |
![]()
Сообщение
#8
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
giker, значит, view->render не изменяет картинку, правильно. Почему - я не знаю
![]() |
|
|
giker |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
В смысле рисовалку? qwtPlot это виджет типа QwtPlot из билиотеки Qwt, существующий и уже отображенный на основной форме приложения, на его месте может быть любой контрол расположенный на форме. Кстати заметил, что если я создаю кнопку в коде (то есть ее нет на форме), то она замечательно отрисовывается в файле:
Это говорит о том, что уже отображенный где-то виджет нельзя отобразить повторно на QGraphicsScene/QGraphicsView? |
|
|
Алексей1153 |
![]()
Сообщение
#10
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
giker, я не знаю, с чем это связано. Может быть, размер у вьюхи нулевой ? Попробуй принудительно размер задать какой-нибудь
|
|
|
giker |
![]()
Сообщение
#11
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Итак после долгих экспериментов, задача почти решилась - фаил заполняет нечто, код вот такой:
но в файле получается не разлинованая декартова система координат на сером фоне как должно быть, а какие-то сине-фиолетовые полосы. На сколько я понимаю неправильно происходит чтение со сцены в QPixmap. Подскажите пожалуйста в чем дело. |
|
|
Алексей1153 |
![]()
Сообщение
#12
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
я так понимаю, что продвижение - это
QPixmap pixmap(300, 300); ? ![]() я домой приду, попробую. Это через 3-4 часика |
|
|
giker |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Задача так и не решилась - то что я принял за неправильное отображение моего рисунка, оказалось просто мусором при создания pixmap (кстати странно что он не создается просто черным, в каким-то серобурмальновым в полоску). Интересует вот какой вопрос: Возможно ли в принципе отрисовать в файл через QGraphicScene, виджет уже отрисованный на форме или нет?
Решил пойти другим путем: QwtPlot умеет сохранять свои графики в svg формат через QSvgGenerator, мне нужно вставить этот SVG-рисунок в HTML для последующей конвертации его в PDF. В связи с этим возникает вопрос: где хранятся данные svg-картинки в QsvgGenerator. Или нужно сохранить ее файл, а потом вставлять его в HTML? Если да то как: текстом или массивом данных из прочитанного файла? |
|
|
Алексей1153 |
![]()
Сообщение
#14
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
блин, я и забыл совсем покопаться, из головы вылетело ((
giker, напомни мне вечером, что ли... |
|
|
igor_bogomolov |
![]()
Сообщение
#15
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
giker |
![]()
Сообщение
#16
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Не подходит потому что зависит от текущего состояния - размера виджета. Например если пользователь изменит размер родительского окна, соответственно изменяться размеры и дочерних виджетов. Мне же нужно отрисовывать виджет в картинку заданных размеров, желательно с таким же качеством как на экране.
|
|
|
Алексей1153 |
![]()
Сообщение
#17
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
giker, а ты палитру, кстати, делаешь такую же, как у того, кто рендерит ?
|
|
|
giker |
![]()
Сообщение
#18
|
Студент ![]() Группа: Участник Сообщений: 26 Регистрация: 18.5.2010 Пользователь №: 1731 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Палитру вообще не выставляю. Где, как и у кого она выставляется?
|
|
|
Алексей1153 |
![]()
Сообщение
#19
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 12.6.2025, 20:31 |