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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: SVG-rendering  (Прочитано 2769 раз)
prog.devel
Гость
« : Апрель 26, 2011, 13:00 »

Использую Qt 4.7 на Linux и Windows XP. Столкнулся со следующей проблемой: при отображении SVG появляются серьезные искажения. Пробовал рендеринг по схеме "QSvgRenderer -> QPainter -> QPaintDevice": нативный, в QImage, QPicture, OpenGL, QPrinter (PDF). Вывод на разные Paint Device отличается, однако искажения везде есть. Например, в pdf появляются засечки, а в QImage линии, нарисованные с использованием путей, имеют неверную длину. В том же Firefox или с использованием prince-xml все отображается без искажений.
Вот кусок исходного кода:
Код:
    QPrinter p(QPrinter::HighResolution);
    p.setOutputFormat(QPrinter::PdfFormat);
    p.setOutputFileName("test.pdf");
    QPainter painter;
    painter.begin(&p);
    QSvgRenderer svgRend("test.svg");
    svgRend.render(&painter);
    painter.end();

Оригинальное изображение (нормально отрисованное с использованием prince-xml), а также результат рендеринга (png и pdf) прилагаю.

Какие мысли?
« Последнее редактирование: Апрель 26, 2011, 15:09 от prog.devel » Записан
prog.devel
Гость
« Ответ #1 : Апрель 27, 2011, 01:34 »

Проблему решил. Выяснилось, что в QtSvg по умолчанию стили элементов не такие, как это прописано в спецификации svg (что странно). Пришлось писать таблицу стилей и явно задавать значения по умолчанию.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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