Russian Qt Forum
Сентябрь 30, 2024, 16:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сохранение изображения сцены в файл - разные изображения  (Прочитано 3457 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Февраль 06, 2014, 10:58 »

Привет. Столкнулся с задачей сохранить изображение сцены в файл. Все работает, код приведу ниже, но вот беда, шрифты и сглаживание отличается от того, что на экране. Полагаю это из за того, что рендеринг на экране идет через OpenGL, а в файл идет прграммно.

Код:
        scene()->clearSelection();
        QImage  image(scene()->sceneRect().size().toSize(),QImage::Format_ARGB32);
        image.fill(scene()->backgroundColor());

        QPainter    painter(&image);
        painter.setRenderHint(QPainter::Antialiasing,true);
        painter.setRenderHint(QPainter::TextAntialiasing,true);
        scene()->render(&painter);
        image.save(fileName);

прилагаю скриншоты:
сверху изображение в программе, снизу результат сохранения в файл (специально сохранял в bmp что бы исключить сглаживание и сжатие jpg|png).

Как видно, текст не сглаживается вообще, хотя флаги заданы.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Февраль 06, 2014, 11:15 »

Полагаю это из за того, что рендеринг на экране идет через OpenGL, а в файл идет прграммно.
Точнее через "растровую машину рисования" (имедж). Это легко проверить отрендерив сначала в QImage и выведя его на экран. Варианты

- если OpenGL то можно прочитать отрендеренное используя glReadPixels. Хотя у меня и получилось это сделать, недавно от этого кода я избавился

- подобрать шрифты которые гладятся/гадятся одинаково
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Февраль 06, 2014, 13:42 »

Вот только что собрал программу под убунтой и сделал скриншот - все как на экране, т.е. сглаживание и остальное.
А под виндой не работает. Конечно не критично, но странно что так получается.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Февраль 06, 2014, 15:01 »

Как видно, текст не сглаживается вообще, хотя флаги заданы.
Странно, а почему я тогда вижу АА?
Другое дело, что он другой, но он есть!

PS. упс, не так посмотрел - действительно нет
« Последнее редактирование: Февраль 06, 2014, 15:04 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Февраль 06, 2014, 15:08 »

Попробуй при установке фонта задать QFont::setStyleStrategy( QFont::PreferAntialias ).
Записан

Qt 5.11/4.8.7 (X11/Win)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #5 : Февраль 07, 2014, 18:50 »

а где это задавать? для каждого элемента на сцене или для всей сцены целиком?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 19.