Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 105 стр.

UptoLike

105
9.2.2. SVG
По информации википедии SVG (от англ. Scalable Vector Graphics — масштабируемая векторная
графика) — язык разметки масштабируемой векторной графики, созданный Консорциумом
Всемирной паутины (W3C) и входящий в подмножество расширяемого языка разметки XML,
предназначен для описания двумерной векторной и смешанной векторно/растровой графики в
формате XML. Поддерживает как неподвижную, так анимированную и интерактивную графику
или, в иных терминах, декларативную и скриптовую. Это открытый стандарт, является
рекомендацией консорциума W3C, — организации, разработавшей такие стандарты, как HTML и
XHTML. Разрабатывается с 1999 года, в 2001 году вышла 1.1 версия, которая остается актуальной до
сегодняшнего дня, в активной разработке версия 1.2. В основу SVG легли языки разметки VML и
PGML.
Для отображения SVG графики в Qt имеется модуль QtSvg. Соответственно, для того чтобы
использовать возможности SVG необходимо добавить в главный хидер директиву
#include <QtSvg>
и в проектный файл строку
QT += svg
Основные классы MeeGo (и Qt) для работы с SVG:
· QSvgGenerator — класс, осуществляющий рисование;
· QSvgRenderer — отображение содержимого SVG файлов;
· QSvgWidget — соответствующий виджет, через который отображаются SVG данные.
QSvgWidget и QSvgRenderer
Класс QSvgWidgetэто виджет, который используется для отображения содержимого SVG
файлов. В связке с классом QSvgRenderer он используется во многом так же, как и QLabel для
отображения текста и растровых изображений. При этом используя процесс рендеринга классом
QSvgRenderer можно получить чуть больше контроля (например, вывод через классы QImage и
QGLWidget).
Эквивалентные примеры конструирования экземпляра QSvgWidget:
widget = QSvgWidget(“filename.svg”);
или,
widget = QSvgWidget();
widget.load(“filename.svg”);
или,
widget = QSvgWidget(qbyte);
где qbyteэкземпляр класса QByteArray, содержащий сериализованное представление XML SVG
файла.
Заметим также, что QSvgRenderer может использоваться для рисования SVG графики на любых
экземплярах класса QPainter. Используя его, SVG графика может быть выведена на любом
«устройстве» рисования (например, на экземплярах QWidget, QImage и QGLWidget).
Класс QSvgGenerator
Класс QSvgGenerator является устройством для рисования SVG графики. Он спроектирован как
«устройство записи», возвращающее данные в специфическом формате.
Для того чтобы получить SVG файл сперва необходимо сконфигурировать выход, путём указания
свойства fileName, или outputDevice. Например:
QSvgGenerator generator;
generator.setFileName(path);
generator.setSize(QSize(200, 200));
generator.setViewBox(QRect(0, 0, 200, 200));
generator.setTitle(tr("SVG Generator Example Drawing"));
generator.setDescription(
tr("An SVG drawing created by the SVG Generator "