Spec-Zone.ru › Qt

Класс QPaintEngine

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

Заголовок: #include <QPaintEngine>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
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 (доступные через QOpenGLWidget) и печати (что позволяет использовать QPainter для рисования на объекте QPrinter).

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

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

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

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

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

Константа Значение Описание
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.

Константа Значение Описание
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

Константа Значение Описание
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::OpenGL 6
QPaintEngine::Picture 7 QPicture формат
QPaintEngine::SVG 8 Формат масштабируемой векторной графики XML
QPaintEngine::Raster 9
QPaintEngine::Direct3D 10 Только Windows, движок на основе Direct3D
QPaintEngine::Pdf 11 Формат Portable Document Format
QPaintEngine::OpenVG 12
QPaintEngine::User 50 Идентификатор типа первого пользователя
QPaintEngine::MaxUser 100 Идентификатор типа последнего пользователя
QPaintEngine::OpenGL2 13
QPaintEngine::PaintBuffer 14
QPaintEngine::Blitter 15
QPaintEngine::Direct2D 16 Только 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. Растровый рисунок будет повторно нарисован до заполнения 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)

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

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

См. также QPaintEngineState.

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

Spec-Zone.ru

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