Spec-Zone.ru › Qt 5.9

Класс 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(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, PolygonDrawMode mode)
virtual void drawPolygon(const QPoint *points, int pointCount, 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(PaintEngineFeatures feature) const
bool isActive() const
QPaintDevice * paintDevice() const
QPainter * painter() const
void setActive(bool state)
virtual 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() и Систему отрисовки.

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

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 Формат 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(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 в QPointF и вызов плавающейточечной версии drawPoints.

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

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

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

[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, 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(PaintEngineFeatures feature) const

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

bool QPaintEngine::isActive() const

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

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

QPaintDevice *QPaintEngine::paintDevice() const

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

QPainter *QPaintEngine::painter() const

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

void QPaintEngine::setActive(bool state)

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

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

[pure virtual] 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/qt-5.9/qpaintengine.html

Spec-Zone.ru

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