Spec-Zone.ru › Qt 5.11

Класс QPaintEngine

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

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

Открытые типы

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

Открытые функции

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

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

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

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.

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

enum QPaintEngine::DirtyFlagflags 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
QPaintEngine::Raster 10
QPaintEngine::Direct3D 11 Только Windows, движок на базе Direct3D
QPaintEngine::Pdf 12 Переносимый формат документов
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 = ...)

Создаёт движок отрисовки с набором функций, указанным в 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

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

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)

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

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

См. также QPaintEngineState.

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

Spec-Zone.ru

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