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