Spec-Zone.ru › Qt 5.14

Класс QPaintEngine

Класс QPaintEngine предоставляет абстрактное определение того, как QPainter рисует на заданном устройстве в заданной платформе. Подробнее...

Заголовок: #include <QPaintEngine>
qmake: QT += gui
  • Список всех членов, включая наследуемые

Типы публичного доступа

перечисление DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, …, AllDirty }
флаги DirtyFlags
перечисление PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ConicalGradientFill, …, AllFeatures }
флаги PaintEngineFeatures
перечисление PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode }
перечисление Type { X11, Windows, MacPrinter, CoreGraphics, QuickDraw, …, Direct2D }

Публичные функции

QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
виртуальный ~QPaintEngine()
виртуальный bool begin(QPaintDevice *pdev) = 0
виртуальный void drawEllipse(const QRectF &rect)
виртуальный void drawEllipse(const QRect &rect)
виртуальный void drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
виртуальный void drawLines(const QLineF *lines, int lineCount)
виртуальный void drawLines(const QLine *lines, int lineCount)
виртуальный void drawPath(const QPainterPath &path)
виртуальный void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0
виртуальный void drawPoints(const QPointF *points, int pointCount)
виртуальный void drawPoints(const QPoint *points, int pointCount)
виртуальный void drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
виртуальный void drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
виртуальный void drawRects(const QRectF *rects, int rectCount)
виртуальный void drawRects(const QRect *rects, int rectCount)
виртуальный void drawTextItem(const QPointF &p, const QTextItem &textItem)
виртуальный void drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
виртуальный bool end() = 0
bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const
bool isActive() const
QPaintDevice * paintDevice() const
QPainter * painter() const
void setActive(bool state)
виртуальный QPaintEngine::Type type() const = 0
виртуальный void updateState(const QPaintEngineState &state) = 0

Подробное описание

Qt предоставляет несколько предварительно созданных реализаций QPaintEngine для различных бэкэндов отрисовки, которые мы поддерживаем. Основным предоставленным движком отрисовки является растровый движок отрисовки, который содержит программный растризатор, поддерживающий полный набор функций на всех поддерживаемых платформах. Это значение по умолчанию для рисования на классах, основанных на QWidget, например, на Windows, X11 и macOS, это бэкэнд для рисования на QImage, и он используется в качестве резервного варианта для движков отрисовки, не поддерживающих определенную возможность. Кроме того, мы предоставляем реализации QPaintEngine для OpenGL (доступные через QGLWidget) и печати (что позволяет использовать QPainter для рисования на объекте QPrinter).

Если необходимо использовать QPainter для рисования на другом бэкэнде, необходимо создать подкласс QPaintEngine и переопределить все его виртуальные функции. Реализация QPaintEngine затем становится доступной путем создания подкласса QPaintDevice и переопределения виртуальной функции QPaintDevice::paintEngine().

QPaintEngine создается и принадлежит QPaintDevice, который его создал.

См. также QPainter, QPaintDevice::paintEngine() и Paint System.

Документация по типам членов

перечисление QPaintEngine::DirtyFlagфлаги QPaintEngine::DirtyFlags

Constant Value Description
QPaintEngine::DirtyPen 0x0001 Ручка грязная и требует обновления.
QPaintEngine::DirtyBrush 0x0002 Кисть грязная и требует обновления.
QPaintEngine::DirtyBrushOrigin 0x0004 Происхождение кисти грязное и требует обновления.
QPaintEngine::DirtyFont 0x0008 Шрифт грязный и требует обновления.
QPaintEngine::DirtyBackground 0x0010 Фон грязный и требует обновления.
QPaintEngine::DirtyBackgroundMode 0x0020 Режим фона грязный и требует обновления.
QPaintEngine::DirtyTransform 0x0040 Преобразование грязное и требует обновления.
QPaintEngine::DirtyClipRegion 0x0080 Область обрезки грязная и требует обновления.
QPaintEngine::DirtyClipPath 0x0100 Область вырезания грязная и требует обновления.
QPaintEngine::DirtyHints 0x0200 Рекомендации по рендерингу грязные и требуют обновления.
QPaintEngine::DirtyCompositionMode 0x0400 Режим композиции грязный и требует обновления.
QPaintEngine::DirtyClipEnabled 0x0800 Включена или выключена обрезка — состояние грязное и требует обновления.
QPaintEngine::DirtyOpacity 0x1000 Постоянная непрозрачность изменилась и требует обновления в рамках изменения состояния в QPaintEngine::updateState().
QPaintEngine::AllDirty 0xffff Удобный перечисление, используемый внутри.

Эти типы используются QPainter для вызова ленивых обновлений различных состояний в QPaintEngine с использованием QPaintEngine::updateState().

Двигатель отрисовки должен обновить каждое грязное состояние.

Тип DirtyFlags — это псевдоним для QFlags<DirtyFlag>. Он хранит логическое ИЛИ сочетание значений DirtyFlag.

enum QPaintEngine::PaintEngineFeatureflags QPaintEngine::PaintEngineFeatures

Это перечисление используется для описания функций или возможностей, которые имеет движок отрисовки. Если функция не поддерживается движком, QPainter сделает всё возможное, чтобы эмулировать эту функцию другими средствами, и передаст движку альфа-смешанное QImage с результатами эмуляции. Некоторые функции не могут быть эмулированы: AlphaBlend и PorterDuff.

Constant Value Description
QPaintEngine::AlphaBlend 0x00000080 Двигатель может альфа-смешивать примитивы.
QPaintEngine::Antialiasing 0x00000400 Двигатель может использовать антиалиасинг для улучшения внешнего вида отрисованных примитивов.
QPaintEngine::BlendModes 0x00008000 Двигатель поддерживает режимы смешивания.
QPaintEngine::BrushStroke 0x00000800 Двигатель поддерживает рисование штрихов, содержащих кисти в качестве заливок, а не только твёрдые цвета (например, штриховую градиентную линию шириной 2).
QPaintEngine::ConicalGradientFill 0x00000040 Двигатель поддерживает конические градиентные заливки.
QPaintEngine::ConstantOpacity 0x00001000 Двигатель поддерживает функцию, предоставляемую QPainter::setOpacity().
QPaintEngine::LinearGradientFill 0x00000010 Двигатель поддерживает линейные градиентные заливки.
QPaintEngine::MaskedBrush 0x00002000 Двигатель способен рендерить кисти, имеющие текстуру с альфа-каналом или маской.
QPaintEngine::ObjectBoundingModeGradients 0x00010000 Двигатель имеет встроенную поддержку градиентов с режимом координат QGradient::ObjectBoundingMode. В противном случае, если поддерживается QPaintEngine::PatternTransform, градиенты в режиме «ограничение объекта» преобразуются в градиенты с режимом координат QGradient::LogicalMode и преобразованием кисти для сопоставления координат.
QPaintEngine::PainterPaths 0x00000200 Двигатель поддерживает работу с контурами.
QPaintEngine::PaintOutsidePaintEvent 0x20000000 Двигатель способен отрисовывать за пределами событий рисования.
QPaintEngine::PatternBrush 0x00000008 Двигатель способен рендерить кисти со стилями кисти, указанными в Qt::BrushStyle.
QPaintEngine::PatternTransform 0x00000002 Двигатель поддерживает преобразование узоров кисти.
QPaintEngine::PerspectiveTransform 0x00004000 Двигатель поддерживает перспективы преобразований примитивов.
QPaintEngine::PixmapTransform 0x00000004 Двигатель может преобразовывать пиксельмапы, включая вращение и сдвиг.
QPaintEngine::PorterDuff 0x00000100 Двигатель поддерживает операции Porter-Duff.
QPaintEngine::PrimitiveTransform 0x00000001 Двигатель поддерживает преобразование примитивов рисования.
QPaintEngine::RadialGradientFill 0x00000020 Двигатель поддерживает радиальные градиентные заливки.
QPaintEngine::RasterOpModes 0x00020000 Двигатель поддерживает побитовые растровые операции.
QPaintEngine::AllFeatures 0xffffffff Все вышеперечисленные функции. Это значение перечисления обычно используется в качестве маски битов.

Тип PaintEngineFeatures — это псевдоним для QFlags<PaintEngineFeature>. Он хранит логическое ИЛИ сочетание значений PaintEngineFeature.

enum QPaintEngine::PolygonDrawMode

Constant Value Description
QPaintEngine::OddEvenMode 0 Полигон должен быть нарисован с использованием правила заливки OddEven.
QPaintEngine::WindingMode 1 Полигон должен быть нарисован с использованием правила заливки Winding.
QPaintEngine::ConvexMode 2 Полигон является выпуклым и может быть нарисован с использованием специализированных алгоритмов, где это возможно.
QPaintEngine::PolylineMode 3 Должен быть нарисован только контур полигона.

enum QPaintEngine::Type

Постоянная Значение Описание
QPaintEngine::X11 0
QPaintEngine::Windows 1
QPaintEngine::MacPrinter 4
QPaintEngine::CoreGraphics 3 macOS's Quartz2D (CoreGraphics)
QPaintEngine::QuickDraw 2 macOS's QuickDraw
QPaintEngine::QWindowSystem 5 Qt для встраиваемой Linux
QPaintEngine::PostScript 6 (Больше не поддерживается)
QPaintEngine::OpenGL 7
QPaintEngine::Picture 8 формат QPicture
QPaintEngine::SVG 9 Формат XML Scalable Vector Graphics
QPaintEngine::Raster 10
QPaintEngine::Direct3D 11 Только Windows, движок на базе Direct3D
QPaintEngine::Pdf 12 Формат Portable Document Format
QPaintEngine::OpenVG 13
QPaintEngine::User 50 Идентификатор первого типа пользователя
QPaintEngine::MaxUser 100 Идентификатор последнего типа пользователя
QPaintEngine::OpenGL2 14
QPaintEngine::PaintBuffer 15
QPaintEngine::Blitter 16
QPaintEngine::Direct2D 17 Только Windows, движок на базе Direct2D

Документация функций-членов

QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())

Создаёт движок рисования с набором функций, указанным в caps.

[virtual] QPaintEngine::~QPaintEngine()

Удаляет движок рисования.

[pure virtual] bool QPaintEngine::begin(QPaintDevice *pdev)

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

См. также end() и isActive().

[virtual] void QPaintEngine::drawEllipse(const QRectF &rect)

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

По умолчанию вызывается drawPolygon().

[virtual] void QPaintEngine::drawEllipse(const QRect &rect)

По умолчанию эта функция вызывает плавающей точкой версию этой функции

[virtual] void QPaintEngine::drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)

Переопределите эту функцию, чтобы нарисовать часть image, задаваемую прямоугольником sr, в заданном прямоугольнике rectangle с использованием флагов преобразования flags для преобразования её в пиксельную карту.

[virtual] void QPaintEngine::drawLines(const QLineF *lines, int lineCount)

По умолчанию список линий в lines разбивается на отдельные вызовы drawPath() или drawPolygon() в зависимости от набора функций движка рисования.

[virtual] void QPaintEngine::drawLines(const QLine *lines, int lineCount)

Это перегруженная функция.

По умолчанию происходит преобразование первых lineCount линий в lines в QLineF и вызов плавающей точкой версии этой функции.

[virtual] void QPaintEngine::drawPath(const QPainterPath &path)

По умолчанию функция игнорирует path и ничего не делает.

[pure virtual] void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)

Переопределите эту функцию, чтобы нарисовать часть pm, указанную прямоугольником sr, в заданном r.

[virtual] void QPaintEngine::drawPoints(const QPointF *points, int pointCount)

Рисует первые pointCount точек в буфере points

[virtual] void QPaintEngine::drawPoints(const QPoint *points, int pointCount)

Рисует первые pointCount точек в буфере points

По умолчанию происходит преобразование первых pointCount QPoints в points в QPointFs и вызов плавающей точкой версии drawPoints.

[virtual] void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

Переопределите эту виртуальную функцию, чтобы нарисовать многоугольник, определяемый первыми pointCount точками в points, используя режим mode.

Примечание: Должна быть переопределена хотя бы одна из функций drawPolygon().

[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

Это перегруженная функция.

Переопределите эту виртуальную функцию, чтобы нарисовать многоугольник, определяемый первыми pointCount точками в points, используя режим mode.

Примечание: Должна быть переопределена хотя бы одна из функций drawPolygon().

[virtual] void QPaintEngine::drawRects(const QRectF *rects, int rectCount)

Рисует первые rectCount прямоугольников в буфере rects. По умолчанию эта функция вызывает drawPath() или drawPolygon() в зависимости от набора функций движка рисования.

[virtual] void QPaintEngine::drawRects(const QRect *rects, int rectCount)

Это перегруженная функция.

По умолчанию происходит преобразование первых rectCount прямоугольников в буфере rects в QRectF и вызов плавающей точкой версии этой функции.

[virtual] void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)

Эта функция рисует элемент текста textItem в позиции p. По умолчанию эта функция преобразует текст в QPainterPath и рисует полученную траекторию.

[virtual] void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)

Переопределите эту функцию для отрисовки pixmap в заданном rect, начиная с заданного p. Pixmap будет отрисовываться повторно до тех пор, пока rect не будет заполнен.

[pure virtual] bool QPaintEngine::end()

Переопределите эту функцию для завершения отрисовки на текущем устройстве рисования. Верните true, если отрисовка завершилась успешно; в противном случае верните false.

См. также begin() и isActive().

bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const

Возвращает true , если движок рисования поддерживает указанное feature; в противном случае возвращает false.

bool QPaintEngine::isActive() const

Возвращает true , если движок рисования активно рисует; в противном случае возвращает false.

См. также setActive().

QPaintDevice *QPaintEngine::paintDevice() const

Возвращает устройство, на котором рисует этот движок, если отрисовка активна; в противном случае возвращает nullptr.

QPainter *QPaintEngine::painter() const

Возвращает объект рисования движка рисования.

void QPaintEngine::setActive(bool state)

Устанавливает активное состояние движка рисования в state.

См. также isActive().

[pure virtual] QPaintEngine::Type QPaintEngine::type() const

Переопределите эту функцию для возврата типа движка рисования Type.

[pure virtual] void QPaintEngine::updateState(const QPaintEngineState &state)

Переопределите эту функцию для обновления состояния движка рисования.

При реализации эта функция отвечает за проверку текущего состояния движка рисования и обновление измененных свойств. Используйте функцию QPaintEngineState::state() для определения свойств, которые необходимо обновить, затем используйте соответствующую функцию get для получения текущих значений для заданных свойств.

См. также QPaintEngineState.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qpaintengine.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API