Класс 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.
[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