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