Spec-Zone.ru › Qt 5.13

Класс QPaintEngine

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

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

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

enum DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, ..., AllDirty }
flags DirtyFlags
enum PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ..., AllFeatures }
flags PaintEngineFeatures
enum PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode }
enum Type { X11, Windows, MacPrinter, CoreGraphics, ..., Direct2D }

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

QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
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

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

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

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

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

См. также QPainter, QPaintDevice::paintEngine(), и Система рисования.

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

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 для Embedded Linux
QPaintEngine::PostScript 6 (Больше не поддерживается)
QPaintEngine::OpenGL 7
QPaintEngine::Picture 8 Формат QPicture
QPaintEngine::SVG 9 Формат Scalable Vector Graphics XML
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

Возвращает painter движка отрисовки.

void QPaintEngine::setActive(bool state)

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

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

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

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

[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/qt-5.13/qpaintengine.html

Spec-Zone.ru

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