Класс QSvgRenderer
Класс QSvgRenderer используется для отрисовки содержимого SVG-файлов на устройствах рисования. Подробнее...
| Заголовок: | #include <QSvgRenderer> |
| qmake: | QT += svg |
| С тех пор: | Qt 4.1 |
| Наследует: | QObject |
Этот класс был представлен в Qt 4.1.
Примечание: Все функции в этом классе являются повторно входящими.
Свойства
- aspectRatioMode : Qt::AspectRatioMode
- framesPerSecond : int
- viewBox : QRectF
Открытые функции
| QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr) | |
| QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr) | |
| QSvgRenderer(const QString &filename, QObject *parent = nullptr) | |
| QSvgRenderer(QObject *parent = nullptr) | |
| virtual | ~QSvgRenderer() |
| bool | animated() const |
| Qt::AspectRatioMode | aspectRatioMode() const |
| QRectF | boundsOnElement(const QString &id) const |
| QSize | defaultSize() const |
| bool | elementExists(const QString &id) const |
| int | framesPerSecond() const |
| bool | isValid() const |
| void | setAspectRatioMode(Qt::AspectRatioMode mode) |
| void | setFramesPerSecond(int num) |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
| QTransform | transformForElement(const QString &id) const |
| QRect | viewBox() const |
| QRectF | viewBoxF() const |
Открытые слоты
| bool | load(QXmlStreamReader *contents) |
| bool | load(const QByteArray &contents) |
| bool | load(const QString &filename) |
| void | render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF()) |
| void | render(QPainter *painter, const QRectF &bounds) |
| void | render(QPainter *painter) |
Сигналы
| void | repaintNeeded() |
Подробное описание
С помощью QSvgRenderer можно отрисовывать Scalable Vector Graphics (SVG) на любом подклассе QPaintDevice, включая QWidget, QImage и QGLWidget.
QSvgRenderer предоставляет API, который поддерживает основные функции отрисовки SVG, такие как загрузка и отрисовка статических изображений, а также более интерактивные функции, такие как анимация. Поскольку отрисовка выполняется с помощью QPainter, SVG-рисунки можно отрисовать на любом подклассе QPaintDevice.
SVG-рисунки загружаются либо при создании QSvgRenderer, либо позже с помощью функций load(). Данные либо передаются напрямую в виде сериализованного XML, либо косвенно с помощью имени файла. Если загружен действительный файл, либо при создании рендерера, либо впоследствии, isValid() возвращает true; в противном случае возвращает false. QSvgRenderer предоставляет слот render() для отрисовки текущего документа или текущей кадра анимированного документа с использованием заданного рисовальщика.
Функция defaultSize() предоставляет информацию о необходимом пространстве для отрисовки текущего загруженного SVG-файла. Это полезно для устройств рисования, таких как QWidget, которые часто должны предоставить подсказку размера своему родительскому макету. Размер по умолчанию рисунка может отличаться от видимой области, найденной с помощью свойства viewBox.
Поддерживаются анимированные SVG-рисунки, которые можно управлять с помощью простого набора функций и свойств:
- Функция animated() указывает, содержит ли рисунок информацию об анимации.
- Свойство framesPerSecond содержит скорость воспроизведения анимации.
Наконец, класс QSvgRenderer предоставляет сигнал repaintNeeded(), который испускается всякий раз, когда необходимо обновить отрисовку документа.
См. также QSvgWidget, Qt SVG C++ Classes, SVG Viewer Example и QPicture.
END_OF_DOCUMENT_MARKERДокументация свойств
aspectRatioMode : Qt::AspectRatioMode
как отрисовка соответствует соотношению сторон области просмотра SVG
Принятые режимы:
- Qt::IgnoreAspectRatio (по умолчанию): соотношение сторон игнорируется, и отрисовка растягивается до целевых границ.
- Qt::KeepAspectRatio: отрисовка центрируется и масштабируется как можно больше в пределах целевых границ, сохраняя при этом соотношение сторон.
Это свойство было добавлено в Qt 5.15.
Функции доступа:
| Qt::AspectRatioMode | aspectRatioMode() const |
| void | setAspectRatioMode(Qt::AspectRatioMode mode) |
framesPerSecond : int
Это свойство содержит количество кадров в секунду, которое должно отображаться
Количество кадров в секунду равно 0, если текущий документ не анимирован.
Функции доступа:
| int | framesPerSecond() const |
| void | setFramesPerSecond(int num) |
См. также animated().
viewBox : QRectF
Это свойство содержит прямоугольник, определяющий видимую область документа в логических координатах
Это свойство было добавлено в Qt 4.2.
Функции доступа:
| QRectF | viewBoxF() const |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
Документация по членам-функциям
QSvgRenderer::QSvgRenderer(QXmlStreamReader *contents, QObject *parent = nullptr)
Создает новый рендерер с заданным parent и загружает данные SVG, используя указанный потоковый ридер contents.
Эта функция была добавлена в Qt 4.5.
QSvgRenderer::QSvgRenderer(const QByteArray &contents, QObject *parent = nullptr)
Создает новый рендерер с заданным parent и загружает данные SVG из массива байтов, указанного в contents.
QSvgRenderer::QSvgRenderer(const QString &filename, QObject *parent = nullptr)
Создает новый рендерер с заданным parent и загружает содержимое файла SVG с указанным filename.
QSvgRenderer::QSvgRenderer(QObject *parent = nullptr)
Создает новый рендерер с заданным parent.
[slot] bool QSvgRenderer::load(QXmlStreamReader *contents)
Загружает указанный SVG в contents, возвращая true, если содержимое было успешно проанализировано; в противном случае возвращает false.
Читатель будет использоваться с текущей позиции. Если contents null, поведение не определено.
Эта функция была добавлена в Qt 4.5.
[slot] bool QSvgRenderer::load(const QByteArray &contents)
Загружает указанный формат SVG contents, возвращая true, если содержимое было успешно проанализировано; в противном случае возвращает false.
[slot] bool QSvgRenderer::load(const QString &filename)
Загружает файл SVG, указанный filename, возвращая true, если содержимое было успешно проанализировано; в противном случае возвращает false.
[slot] void QSvgRenderer::render(QPainter *painter, const QString &elementId, const QRectF &bounds = QRectF())
Отображает указанный элемент с elementId с помощью заданного painter в указанных bounds. Если прямоугольник ограничительной рамки не указан, элемент SVG отображается на всей области рисования.
[slot] void QSvgRenderer::render(QPainter *painter, const QRectF &bounds)
Отображает текущий документ или текущий кадр анимированного документа с помощью заданного painter в указанных bounds в рамках рисовальщика. Если bounds не пусто, вывод будет масштабироваться для заполнения его, игнорируя любое соотношение сторон, подразумеваемое SVG.
[slot] void QSvgRenderer::render(QPainter *painter)
Отображает текущий документ или текущий кадр анимированного документа с помощью заданного painter.
[signal] void QSvgRenderer::repaintNeeded()
Этот сигнал излучается всякий раз, когда отрисовка документа должна быть обновлена, обычно для целей анимации.
[virtual] QSvgRenderer::~QSvgRenderer()
Уничтожает рендерер.
bool QSvgRenderer::animated() const
Возвращает true, если текущий документ содержит анимированные элементы; в противном случае возвращает false.
См. также framesPerSecond().
QRectF QSvgRenderer::boundsOnElement(const QString &id) const
Возвращает прямоугольник ограничительной рамки элемента с заданным id. Матрица преобразования родительских элементов не влияет на рамки элемента.
Эта функция была добавлена в Qt 4.2.
См. также transformForElement().
QSize QSvgRenderer::defaultSize() const
Возвращает размер по умолчанию содержимого документа.
bool QSvgRenderer::elementExists(const QString &id) const
Возвращает true, если элемент с заданным id существует в текущем проанализированном файле SVG и является рендерируемым элементом.
Примечание: этот метод возвращает true только для элементов, которые могут быть отрисованы. Это означает, что элементы, которые считаются частью свойств заполнения/контура, например, радиальные градиенты, даже если они помечены атрибутами «id», не будут найдены этим методом.
Эта функция была добавлена в Qt 4.2.
bool QSvgRenderer::isValid() const
Возвращает true, если существует действительный текущий документ; в противном случае возвращает false.
QTransform QSvgRenderer::transformForElement(const QString &id) const
Возвращает матрицу преобразования для элемента с заданным id. Матрица является произведением преобразования родительских элементов. Само преобразование элемента не включено.
Для нахождения ограничительной рамки элемента в логических координатах вы можете применить матрицу к прямоугольнику, возвращенному из boundsOnElement().
Эта функция была добавлена в Qt 5.15.
См. также boundsOnElement().
QRect QSvgRenderer::viewBox() const
Возвращает viewBoxF().toRect().
См. также setViewBox() и viewBoxF().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qsvgrenderer.html