Класс QSvgRenderer
Класс QSvgRenderer используется для отрисовки содержимого файлов SVG на устройствах рисования. Подробнее...
| Заголовок: | #include <QSvgRenderer> |
| qmake: | QT += svg |
| С тех пор: | Qt 4.1 |
| Наследует: | QObject |
Этот класс был представлен в Qt 4.1.
Примечание: Все функции в этом классе являются повторно входящими.
Свойства
- 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 |
| QRectF | boundsOnElement(const QString &id) const |
| QSize | defaultSize() const |
| bool | elementExists(const QString &id) const |
| int | framesPerSecond() const |
| bool | isValid() const |
| QMatrix | matrixForElement(const QString &id) const |
| void | setFramesPerSecond(int num) |
| void | setViewBox(const QRect &viewbox) |
| void | setViewBox(const QRectF &viewbox) |
| 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() для отрисовки текущего документа или текущей кадра анимированного документа с помощью заданного painter.
Функция defaultSize() предоставляет информацию о требуемом пространстве для отрисовки загруженного файла SVG. Это полезно для устройств рисования, таких как QWidget, которые часто должны предоставлять подсказку размера для своей родительской компоновки. Размер по умолчанию изображения может отличаться от видимой области, полученной с помощью свойства viewBox.
Поддерживаются анимированные изображения SVG, которые можно контролировать с помощью простого набора функций и свойств:
- Функция animated() указывает, содержит ли изображение информацию об анимации.
- Свойство framesPerSecond содержит частоту воспроизведения анимации.
Наконец, класс QSvgRenderer предоставляет сигнал repaintNeeded(), который излучается всякий раз, когда нужно обновить отрисовку документа.
См. также QSvgWidget, Классы Qt SVG C++, Пример SVG Viewer и QPicture.
Документация по свойствам
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.
END_OF_DOCUMENT_MARKERQSvgRenderer::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 внутри холста. Если прямоугольник ограничительной области не задан, 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.
См. также matrixForElement().
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.
QMatrix QSvgRenderer::matrixForElement(const QString &id) const
Возвращает матрицу преобразования для элемента с заданным id. Матрица является произведением преобразований родительских элементов. Преобразование самого элемента не включается.
Чтобы найти прямоугольник ограничительной области элемента в логических координатах, вы можете применить матрицу к прямоугольнику, возвращённому методом boundsOnElement().
Эта функция была добавлена в Qt 4.2.
См. также 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.13/qsvgrenderer.html