Spec-Zone.ru › Qt 6.0

Класс QPaintEngine

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

Заголовок: #include <QPaintEngine>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
  • Список всех членов, включая унаследованные

Типы public

перечисление 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 }

Функции public

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() и Систему отрисовки.

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

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::OpenGL 6
QPaintEngine::Picture 7 QPicture формат
QPaintEngine::SVG 8 Формат масштабируемых векторных графических файлов SVG 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 точек QPoint в 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.0/qpaintengine.html

Spec-Zone.ru

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