Spec-Zone.ru › Qt 5.13

Класс QPainter

Класс QPainter выполняет низкоуровневую отрисовку на виджетах и других устройствах рисования. Подробнее...

Заголовок: #include <QPainter>
qmake: QT += gui
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Примечание: Все функции в этом классе являются перевходовыми.

Открытые типы

класс PixmapFragment
перечисление РежимКомпозиции { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, ..., RasterOp_SourceOrNotDestination }
перечисление ПодсказкаФрагментаРастровогоИзображения { OpaqueHint }
флаги ПодсказкиФрагментаРастровогоИзображения
перечисление ПараметрОтрисовки { Antialiasing, TextAntialiasing, SmoothPixmapTransform, HighQualityAntialiasing, ..., LosslessImageRendering }
флаги ПараметрыОтрисовки

Открытые функции

QPainter(QPaintDevice *device)
QPainter()
~QPainter()
const QBrush & background() const
Qt::BGMode backgroundMode() const
bool begin(QPaintDevice *device)
void beginNativePainting()
QRectF boundingRect(const QRectF &rectangle, int flags, const QString &text)
QRect boundingRect(const QRect &rectangle, int flags, const QString &text)
QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text)
QRectF boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
const QBrush & brush() const
QPoint brushOrigin() const
QRectF clipBoundingRect() const
QPainterPath clipPath() const
QRegion clipRegion() const
QTransform combinedTransform() const
QPainter::CompositionMode compositionMode() const
QPaintDevice * device() const
const QTransform & deviceTransform() const
void drawArc(const QRectF &rectangle, int startAngle, int spanAngle)
void drawArc(const QRect &rectangle, int startAngle, int spanAngle)
void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawChord(const QRectF &rectangle, int startAngle, int spanAngle)
void drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawChord(const QRect &rectangle, int startAngle, int spanAngle)
void drawConvexPolygon(const QPointF *points, int pointCount)
void drawConvexPolygon(const QPolygonF &polygon)
void drawConvexPolygon(const QPoint *points, int pointCount)
void drawConvexPolygon(const QPolygon &polygon)
void drawEllipse(const QRectF &rectangle)
void drawEllipse(const QRect &rectangle)
void drawEllipse(int x, int y, int width, int height)
void drawEllipse(const QPointF &center, qreal rx, qreal ry)
void drawEllipse(const QPoint &center, int rx, int ry)
void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
void drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
void drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
void drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = ...)
void drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = ...)
void drawImage(const QRectF &rectangle, const QImage &image)
void drawImage(const QRect &rectangle, const QImage &image)
void drawImage(const QPointF &point, const QImage &image)
void drawImage(const QPoint &point, const QImage &image)
void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor)
void drawLine(const QLineF &line)
void drawLine(const QLine &line)
void drawLine(int x1, int y1, int x2, int y2)
void drawLine(const QPoint &p1, const QPoint &p2)
void drawLine(const QPointF &p1, const QPointF &p2)
void drawLines(const QLineF *lines, int lineCount)
void drawLines(const QVector<QLineF> &lines)
void drawLines(const QPointF *pointPairs, int lineCount)
void drawLines(const QVector<QPointF> &pointPairs)
void drawLines(const QLine *lines, int lineCount)
void drawLines(const QVector<QLine> &lines)
void drawLines(const QPoint *pointPairs, int lineCount)
void drawLines(const QVector<QPoint> &pointPairs)
void drawPath(const QPainterPath &path)
void drawPicture(const QPointF &point, const QPicture &picture)
void drawPicture(int x, int y, const QPicture &picture)
void drawPicture(const QPoint &point, const QPicture &picture)
void drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
void drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawPie(const QRect &rectangle, int startAngle, int spanAngle)
void drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
void drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)
void drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
void drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
void drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
void drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)
void drawPixmap(const QPointF &point, const QPixmap &pixmap)
void drawPixmap(const QPoint &point, const QPixmap &pixmap)
void drawPixmap(int x, int y, const QPixmap &pixmap)
void drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
void drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
void drawPoint(const QPointF &position)
void drawPoint(const QPoint &position)
void drawPoint(int x, int y)
void drawPoints(const QPointF *points, int pointCount)
void drawPoints(const QPolygonF &points)
void drawPoints(const QPoint *points, int pointCount)
void drawPoints(const QPolygon &points)
void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolyline(const QPointF *points, int pointCount)
void drawPolyline(const QPolygonF &points)
void drawPolyline(const QPoint *points, int pointCount)
void drawPolyline(const QPolygon &points)
void drawRect(const QRectF &rectangle)
void drawRect(int x, int y, int width, int height)
void drawRect(const QRect &rectangle)
void drawRects(const QRectF *rectangles, int rectCount)
void drawRects(const QVector<QRectF> &rectangles)
void drawRects(const QRect *rectangles, int rectCount)
void drawRects(const QVector<QRect> &rectangles)
void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)
void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)
void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
void drawStaticText(int left, int top, const QStaticText &staticText)
void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
void drawText(const QPointF &position, const QString &text)
void drawText(const QPoint &position, const QString &text)
void drawText(int x, int y, const QString &text)
void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
void drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
void drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
void drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
void drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
void drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = ...)
bool end()
void endNativePainting()
void eraseRect(const QRectF &rectangle)
void eraseRect(int x, int y, int width, int height)
void eraseRect(const QRect &rectangle)
void fillPath(const QPainterPath &path, const QBrush &brush)
void fillRect(const QRectF &rectangle, const QBrush &brush)
void fillRect(int x, int y, int width, int height, const QBrush &brush)
void fillRect(const QRect &rectangle, const QBrush &brush)
void fillRect(const QRectF &rectangle, const QColor &color)
void fillRect(int x, int y, int width, int height, const QColor &color)
void fillRect(const QRect &rectangle, const QColor &color)
void fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
void fillRect(const QRect &rectangle, Qt::GlobalColor color)
void fillRect(const QRectF &rectangle, Qt::GlobalColor color)
void fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
void fillRect(const QRect &rectangle, Qt::BrushStyle style)
void fillRect(const QRectF &rectangle, Qt::BrushStyle style)
void fillRect(int x, int y, int width, int height, QGradient::Preset preset)
void fillRect(const QRect &rectangle, QGradient::Preset preset)
void fillRect(const QRectF &rectangle, QGradient::Preset preset)
const QFont & font() const
QFontInfo fontInfo() const
QFontMetrics fontMetrics() const
bool hasClipping() const
bool isActive() const
Qt::LayoutDirection layoutDirection() const
qreal opacity() const
QPaintEngine * paintEngine() const
const QPen & pen() const
QPainter::RenderHints renderHints() const
void resetTransform()
void restore()
void rotate(qreal angle)
void save()
void scale(qreal sx, qreal sy)
void setBackground(const QBrush &brush)
void setBackgroundMode(Qt::BGMode mode)
void setBrush(const QBrush &brush)
void setBrush(Qt::BrushStyle style)
void setBrushOrigin(const QPointF &position)
void setBrushOrigin(int x, int y)
void setBrushOrigin(const QPoint &position)
void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRegion(const QRegion &region, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipping(bool enable)
void setCompositionMode(QPainter::CompositionMode mode)
void setFont(const QFont &font)
void setLayoutDirection(Qt::LayoutDirection direction)
void setOpacity(qreal opacity)
void setPen(const QPen &pen)
void setPen(const QColor &color)
void setPen(Qt::PenStyle style)
void setRenderHint(QPainter::RenderHint hint, bool on = true)
void setRenderHints(QPainter::RenderHints hints, bool on = true)
void setTransform(const QTransform &transform, bool combine = false)
void setViewTransformEnabled(bool enable)
void setViewport(const QRect &rectangle)
void setViewport(int x, int y, int width, int height)
void setWindow(const QRect &rectangle)
void setWindow(int x, int y, int width, int height)
void setWorldMatrixEnabled(bool enable)
void setWorldTransform(const QTransform &matrix, bool combine = false)
void shear(qreal sh, qreal sv)
void strokePath(const QPainterPath &path, const QPen &pen)
bool testRenderHint(QPainter::RenderHint hint) const
const QTransform & transform() const
void translate(const QPointF &offset)
void translate(const QPoint &offset)
void translate(qreal dx, qreal dy)
bool viewTransformEnabled() const
QRect viewport() const
QRect window() const
bool worldMatrixEnabled() const
const QTransform & worldTransform() const

Подробное описание

QPainter предоставляет высокооптимизированные функции для большинства задач рисования, необходимых в графических программах. Он может рисовать всё, от простых линий до сложных фигур, таких как сектора и хорды. Он также может рисовать выровненный текст и пиксельмапы. Обычно он рисует в "естественной" системе координат, но также может выполнять преобразования вида и мира. QPainter может работать с любым объектом, наследующим от класса QPaintDevice.

Типичное использование QPainter находится внутри события отрисовки виджета: создать и настроить (например, установить перо или кисть) painter. Затем рисовать. Не забудьте уничтожить объект QPainter после отрисовки. Например:

void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setPen(Qt::blue);
    painter.setFont(QFont("Arial", 30));
    painter.drawText(rect(), Qt::AlignCenter, "Qt");
}

Основной функциональностью QPainter является рисование, но класс также предоставляет несколько функций, позволяющих настроить настройки QPainter, качество рендеринга и другие, которые позволяют выполнить обрезку. Кроме того, вы можете управлять тем, как различные фигуры объединяются, указав режим композиции painter.

Функция isActive() указывает, активен ли painter. Painter активируется функцией begin() и конструктором, принимающим QPaintDevice. Функция end() и деструктор деактивируют его.

Вместе с классами QPaintDevice и QPaintEngine, QPainter образуют основу для системы отрисовки Qt. QPainter — это класс, используемый для выполнения операций рисования. QPaintDevice представляет устройство, на котором можно рисовать с помощью QPainter. QPaintEngine обеспечивает интерфейс, который painter использует для рисования на различных типах устройств. Если painter активен, device() возвращает устройство отрисовки, на котором painter рисует, а paintEngine() возвращает движок отрисовки, на котором painter в данный момент работает. Дополнительная информация приведена в разделе Система отрисовки.

Иногда желательно позволить кому-то другому рисовать на необычном QPaintDevice. QPainter поддерживает статическую функцию для этого, setRedirected().

Предупреждение: Когда устройство отрисовки — это виджет, QPainter может использоваться только внутри функции paintEvent() или в функции, вызываемой paintEvent().

Настройки

Существует несколько настроек, которые вы можете настроить, чтобы QPainter рисовал в соответствии с вашими предпочтениями:

  • font() — шрифт, используемый для отрисовки текста. Если объект рисования isActive(), вы можете получить информацию о текущем шрифте и его метриках, используя функции fontInfo() и fontMetrics() соответственно.
  • brush() определяет цвет или узор, используемый для заливки фигур.
  • pen() определяет цвет или штриховку, используемые для рисования линий или границ.
  • backgroundMode() определяет, есть ли background() или нет, т.е. это либо Qt::OpaqueMode, либо Qt::TransparentMode.
  • background() применяется только тогда, когда backgroundMode() равен Qt::OpaqueMode, а pen() — штриховка. В этом случае он описывает цвет фоновых пикселей в штриховке.
  • brushOrigin() определяет начало плиссированных кистей, обычно начало фонового изображения виджета.
  • viewport(), window(), worldTransform() образуют систему координат преобразования рисовальщика. Дополнительную информацию можно найти в разделе Преобразования координат и документации Система координат.
  • hasClipping() показывает, есть ли обрезка у рисовальщика. (Устройство отрисовки также использует обрезку.) Если у рисовальщика есть обрезка, он обрезается по clipRegion().
  • layoutDirection() определяет направление выравнивания, используемое рисовальщиком при отрисовке текста.
  • worldMatrixEnabled() указывает, включено ли преобразование мира.
  • viewTransformEnabled() указывает, включено ли преобразование вида.

Обратите внимание, что некоторые из этих настроек дублируют настройки некоторых устройств отрисовки, например, QWidget::font(). Функция QPainter::begin() (или, что эквивалентно, конструктор QPainter) копирует эти атрибуты с устройства отрисовки.

В любой момент вы можете сохранить состояние QPainter, вызвав функцию save(), которая сохраняет все доступные настройки в внутренней стеке. Функция restore() возвращает их обратно.

Отрисовка

QPainter предоставляет функции для рисования большинства примитивов: drawPoint(), drawPoints(), drawLine(), drawRect(), drawRoundedRect(), drawEllipse(), drawArc(), drawPie(), drawChord(), drawPolyline(), drawPolygon(), drawConvexPolygon() и drawCubicBezier(). Две удобные функции drawRects() и drawLines() рисуют заданное количество прямоугольников или линий в заданном массиве QRects или QLines с помощью текущей кисти и пера.

Класс QPainter также предоставляет функцию fillRect(), которая заполняет заданный QRect заданной QBrush, и функцию eraseRect(), которая стирает область внутри заданного прямоугольника.

Все эти функции имеют целочисленные и плавающие версии.

Пример базовой отрисовки

Пример Базовой отрисовки демонстрирует, как отображать базовые графические примитивы различными стилями с использованием класса QPainter.

Если вам нужно нарисовать сложную фигуру, особенно если вам нужно делать это многократно, рассмотрите возможность создания QPainterPath и рисования с помощью drawPath().

Пример траекторий рисования

Класс QPainterPath предоставляет контейнер для операций отрисовки, позволяя создавать и повторно использовать графические фигуры.

Пример Painter Paths показывает, как траектории рисования могут использоваться для построения сложных фигур для отрисовки.

QPainter также предоставляет функцию fillPath(), которая заполняет заданный QPainterPath заданной QBrush, и функцию strokePath(), которая рисует контур заданной траектории (т.е. обводит траекторию).

См. также пример Деформации векторов, который демонстрирует, как использовать сложные векторные методы для рисования текста с использованием QPainterPath, пример Градиенты, который демонстрирует различные типы градиентов, доступные в Qt, и пример Отрисовки контуров, который демонстрирует встроенные штриховки Qt и показывает, как можно использовать пользовательские узоры для расширения набора доступных узоров.

Деформации векторов Градиенты Отрисовки контуров

Отрисовка текста выполняется с помощью drawText(). Если вам требуется точное позиционирование, boundingRect() укажет вам местоположение, где будет выполняться команда drawText().

Отрисовка растровых изображений и картинок

Существуют функции для отрисовки растровых изображений/изображений, а именно drawPixmap(), drawImage() и drawTiledPixmap(). Обе функции drawPixmap() и drawImage() производят одинаковый результат, за исключением того, что drawPixmap() быстрее на экране, в то время как drawImage() может быть быстрее на QPrinter или других устройствах.

Есть функция drawPicture(), которая рисует содержимое всего QPicture. Функция drawPicture() игнорирует все настройки рисовальщика, поскольку QPicture имеет свои собственные настройки.

Отрисовка высококачественных версий растровых изображений и картинок

Высококачественные версии растровых изображений имеют значение коэффициента пикселей устройства, большее 1 (см. QImageReader, QPixmap::devicePixelRatio()). Если оно совпадает со значением базового QPaintDevice, оно рисуется непосредственно на устройстве без дополнительных преобразований.

Например, это происходит при отрисовке QPixmap размером 64x64 пикселя с коэффициентом пикселей устройства 2 на экране с высокой плотностью пикселей, также имеющем коэффициент пикселей устройства 2. Обратите внимание, что растровое изображение фактически составляет 32x32 пикселя в пространстве пользователя. Пути кода в Qt, которые рассчитывают геометрию макета на основе размера растрового изображения, будут использовать этот размер. В результате растровое изображение отображается как растровое изображение с высокой плотностью пикселей, а не как большое растровое изображение.

Качество отрисовки

Для получения оптимального результата отрисовки с помощью QPainter следует использовать платформенно-независимое QImage в качестве устройства отрисовки; т.е. использование QImage гарантирует, что результат имеет идентичное представление пикселей на любой платформе.

Класс QPainter также предоставляет средства управления качеством отрисовки с помощью перечисления RenderHint и поддержки плавающей точки: все функции для рисования примитивов имеют версию с плавающей точкой. Они часто используются в сочетании с рендеринговой подсказкой QPainter::Antialiasing.

Пример концентрических окружностей

Пример Концентрических окружностей демонстрирует улучшенное качество отрисовки, которое можно получить с использованием плавающей точки и сглаживания при отрисовке пользовательских виджетов.

Главное окно приложения отображает несколько виджетов, которые отрисовываются с использованием различных комбинаций точности и сглаживания.

Перечисление RenderHint определяет флаги для QPainter, которые могут или не могут учитываться конкретным движком. QPainter::Antialiasing указывает, что движок должен сглаживать края примитивов, если это возможно, QPainter::TextAntialiasing указывает, что движок должен сглаживать текст, если это возможно, и QPainter::SmoothPixmapTransform указывает, что движок должен использовать алгоритм плавного преобразования растрового изображения.

Функция renderHints() возвращает флаг, определяющий установленные подсказки рендеринга для данного рисовальщика. Используйте функцию setRenderHint() для установки или сброса текущих установленных RenderHints.

Преобразования координат

Обычно QPainter работает в собственной системе координат устройства (обычно пиксели), но QPainter хорошо поддерживает преобразования координат.

nop rotate() scale() translate()

Наиболее часто используемые преобразования — масштабирование, вращение, перемещение и сдвиг. Используйте функцию scale() для масштабирования системы координат на заданный сдвиг, функцию rotate() для поворота по часовой стрелке и функцию translate() для перемещения (т.е. добавления заданного сдвига к точкам). Также можно повернуть систему координат вокруг начала координат с помощью функции shear(). Посмотрите пример Аффинных преобразований для визуализации сдвинутой системы координат.

См. также пример Преобразований, который показывает, как преобразования влияют на способ, которым QPainter отображает графические примитивы. В частности, он показывает, как порядок преобразований влияет на результат.

class="generic" width="100%">
Пример аффинных преобразований

Пример Аффинных преобразований демонстрирует способность Qt выполнять аффинные преобразования над операциями рисования. Демонстрация также позволяет пользователю экспериментировать с операциями преобразования и сразу же видеть результаты.

Все операции преобразования действуют над преобразованием worldTransform(). Матрица преобразует точку в плоскости в другую точку. Для получения дополнительной информации о матрице преобразования см. документацию по Системе координат и QTransform.

Функция setWorldTransform() может заменить или добавить к текущему worldTransform(). Функция resetTransform() сбрасывает все преобразования, которые были выполнены с помощью функций translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() и setWindow(). Функция deviceTransform() возвращает матрицу, преобразующую логические координаты в физические координаты устройства рисования, зависящего от платформы. Последняя функция нужна только при использовании команд рисования платформы на платформенно-зависимой ручке, и платформа не выполняет преобразования nativly.

При рисовании с помощью QPainter мы указываем точки, используя логические координаты, которые затем преобразуются в физические координаты устройства рисования. Сопоставление логических координат с физическими координатами выполняется с помощью QPainter 's combinedTransform(), комбинации viewport() и window() и worldTransform(). viewport() представляет физические координаты, определяющие произвольную область, window() описывает ту же область в логических координатах, а worldTransform() идентичен матрице преобразования.

См. также Систему координат

id="clipping">Обрезка

QPainter может обрезать любую операцию рисования до прямоугольника, области или векторной кривой. Текущая область обрезки доступна с помощью функций clipRegion() и clipPath(). Выбор между кривыми или областями (быстрее) зависит от базового paintEngine(). Например, движок рисования QImage предпочитает кривые, а движок рисования X11 — области. Установка обрезки выполняется в логических координатах художника.

После обрезки QPainter, устройство рисования также может обрезать. Например, большинство виджетов обрезают пиксели, используемые дочерними виджетами, и большинство принтеров обрезают область вблизи краев листа бумаги. Это дополнительная обрезка не отражается в значении возврата clipRegion() или hasClipping().

id="composition-modes">Режимы композиции

QPainter предоставляет перечисление CompositionMode, которое определяет правила Портера-Даффа для композиции цифровых изображений; оно описывает модель объединения пикселей в одном изображении (источник) с пикселями в другом изображении (назначение).

Две наиболее распространенные формы композиции — Source и SourceOver. Source используется для рисования непрозрачных объектов на устройство рисования. В этом режиме каждый пиксель источника заменяет соответствующий пиксель назначения. В режиме композиции SourceOver объект источника прозрачен и рисуется поверх назначения.

Обратите внимание, что преобразование композиции работает попиксельно. Поэтому существует разница между использованием самого графического примитива и его ограничивающей прямоугольной области: ограничивающая прямоугольная область содержит пиксели с alpha == 0 (т.е. пиксели вокруг примитива). Эти пиксели перезаписывают пиксели другого изображения, эффективно очищая их, в то время как примитив перезаписывает только свою область.

class="generic" width="100%">
Пример режимов композиции

Пример Режимов композиции, доступный в каталоге примеров Qt, позволяет вам экспериментировать с различными режимами композиции и сразу видеть результаты.

id="limitations">Ограничения

Если вы используете координаты с растровым движком рисования Qt, важно отметить, что, хотя координаты, превышающие +/- 215, могут быть использованы, любое рисование с координатами за пределами этого диапазона не гарантируется; рисование может быть обрезано. Это связано с использованием short int в реализации.

Контуры, генерируемые обводчиком Qt, являются лишь приближением при работе с кривыми формами. В большинстве случаев невозможно представить контур отрезка кривой Безье с помощью другого отрезка кривой Безье, и поэтому Qt приближает контуры кривых с помощью нескольких меньших кривых. По соображениям производительности существует ограничение на то, сколько кривых использует Qt для этих контуров, и, следовательно, при использовании больших ширины пера или масштаба ошибка контура увеличивается. Для генерации контуров с меньшими ошибками можно использовать класс QPainterPathStroker, у которого есть функция-член setCurveThreshold, которая позволяет пользователю указать допустимую погрешность. Другой обходной путь — сначала преобразовать кривые в многоугольники, а затем нарисовать многоугольники вместо них.

id="performance">Производительность

QPainter — это богатая среда, которая позволяет разработчикам выполнять множество графических операций, таких как градиенты, режимы композиции и векторная графика. И QPainter может делать это на различных аппаратных и программных платформах. Естественно, базовое сочетание аппаратного и программного обеспечения влияет на производительность, и обеспечение быстрой работы каждой отдельной операции в сочетании со всеми различными комбинациями режимов композиции, кистей, обрезки, преобразования и т. д. близко к невыполнимой задаче из-за большого количества перестановок. В качестве компромисса мы выбрали подмножество API QPainter и бэкендов, где производительность гарантируется настолько хорошей, насколько это возможно для заданного сочетания аппаратного и программного обеспечения.

Бэкэнды, на которых мы фокусируемся как на высокопроизводительных движках, это:

  • Растровый — этот бэкенд реализует все рендеринг в чистом программном обеспечении и всегда используется для рендеринга в QImages. Для оптимальной производительности используйте только типы форматов QImage::Format_ARGB32_Premultiplied, QImage::Format_RGB32 или QImage::Format_RGB16. Любой другой формат, включая QImage::Format_ARGB32, имеет значительно худшую производительность. Этот движок используется по умолчанию для QWidget и QPixmap.
  • OpenGL 2.0 (ES) — этот бэкенд является основным бэкендом для ускорения графики аппаратурой. Он может работать на настольных компьютерах и встраиваемых устройствах, поддерживающих спецификации OpenGL 2.0 или OpenGL/ES 2.0. Это включает в себя большинство графических чипов, выпущенных в последние несколько лет. Движок можно включить, используя QPainter на QOpenGLWidget.

Эти операции:

  • Простые преобразования, означающие перемещение и масштабирование, а также повороты на 0, 90, 180, 270 градусов.
  • drawPixmap() в сочетании с простыми преобразованиями и непрозрачностью с режимом преобразования без сглаживания (QPainter::SmoothPixmapTransform не включено в качестве подсказки рендеринга).
  • Заливка прямоугольников сплошным цветом, градиентами двух цветов линейного градиента и простыми преобразованиями.
  • Прямоугольная обрезка с простыми преобразованиями и обрезкой пересечения.
  • Режимы композиции QPainter::CompositionMode_Source и QPainter::CompositionMode_SourceOver.
  • Заливка прямоугольников с закругленными углами с использованием сплошного цвета и заливки градиентами двух цветов линейного градиента.
  • 3x3 патченные пиксы, через qDrawBorderPixmap.

Этот список дает представление о том, какие функции безопасно использовать в приложении, где производительность имеет решающее значение. В некоторых случаях другие операции могут быть быстрыми, но перед широким использованием рекомендуется выполнить бенчмаркинг и проверить их на системе, на которой будет работать программное обеспечение. Также есть случаи, когда дорогостоящие операции допустимы, например, когда результат кэшируется в QPixmap.

См. также QPaintDevice, QPaintEngine, Qt SVG, Пример базового рисования и функции рисования вспомогательных функций.

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

class="fn" id="CompositionMode-enum"> enum QPainter::CompositionMode

Определяет поддерживаемые режимы композиции цифровых изображений. Режимы композиции используются для указания того, как пиксели одного изображения (источника) объединяются с пикселями другого изображения (назначения).

Обратите внимание, что побитовые режимы растровой операции, обозначаемые префиксом RasterOp, поддерживаются только в движках рисования X11 и растровых движках. Это означает, что единственный способ использования этих режимов на Mac — через QImage. Режимы RasterOp, обозначающие режимы смешивания, не поддерживаются для перьев и кистей с альфа-компонентами. Также включение подсказки рендеринга QPainter::Antialiasing эффективно отключит режимы RasterOp.

Наиболее распространённый тип — SourceOver (часто называемый просто альфа-смешиванием), где пиксель источника смешивается поверх пикселя назначения таким образом, что альфа-компонент источника определяет прозрачность пикселя.

Несколько режимов композиции требуют альфа-канала в исходных или целевых изображениях для того, чтобы иметь эффект. Для оптимальной производительности предпочтительным является формат изображения Format_ARGB32_Premultiplied.

Когда установлен режим композиции, он применяется ко всем операторам рисования, перьям, кистям, градиентам и рисованию пиксельных изображений.

Константа Значение Описание
QPainter::CompositionMode_SourceOver 0 Это режим по умолчанию. Альфа-значение источника используется для смешивания пикселя поверх назначения.
QPainter::CompositionMode_DestinationOver 1 Альфа-значение назначения используется для смешивания его поверх пикселей источника. Этот режим является обратным CompositionMode_SourceOver.
QPainter::CompositionMode_Clear 2 Пиксели в назначении очищаются (устанавливаются в полностью прозрачные) независимо от источника.
QPainter::CompositionMode_Source 3 Результат — пиксель источника. (Это означает базовую операцию копирования и идентично SourceOver, когда пиксель источника непрозрачен).
QPainter::CompositionMode_Destination 4 Результат — пиксель назначения. Это означает, что смешивание не оказывает никакого эффекта. Этот режим является обратным CompositionMode_Source.
QPainter::CompositionMode_SourceIn 5 Результат — источник, где альфа уменьшена на альфа-значение назначения.
QPainter::CompositionMode_DestinationIn 6 Результат — назначение, где альфа уменьшена на альфа-значение источника. Этот режим является обратным CompositionMode_SourceIn.
QPainter::CompositionMode_SourceOut 7 Результат — источник, где альфа уменьшена на обратное значение альфа-значения назначения.
QPainter::CompositionMode_DestinationOut 8 Результат — назначение, где альфа уменьшена на обратное значение альфа-значения источника. Этот режим является обратным CompositionMode_SourceOut.
QPainter::CompositionMode_SourceAtop 9 Пиксель источника смешивается поверх назначения, при этом альфа-значение пикселя источника уменьшается на альфа-значение пикселя назначения.
QPainter::CompositionMode_DestinationAtop 10 Пиксель назначения смешивается поверх источника, при этом альфа-значение пикселя назначения уменьшается на альфа-значение пикселя назначения. Этот режим является обратным CompositionMode_SourceAtop.
QPainter::CompositionMode_Xor 11 Источник, альфа которого уменьшена на обратное значение альфа-значения назначения, объединяется с назначением, альфа которого уменьшена на обратное значение альфа-значения источника. CompositionMode_Xor не то же самое, что побитовое XOR.
QPainter::CompositionMode_Plus 12 Альфа-значение и цвет пикселей источника и назначения складываются вместе.
QPainter::CompositionMode_Multiply 13 Результат — цвет источника, умноженный на назначение. Умножение цвета на белый оставляет цвет неизменным, а умножение цвета на черный дает черный.
QPainter::CompositionMode_Screen 14 Цвета источника и назначения инвертируются, а затем умножаются. Трафаретное наложение цвета на белый дает белый, тогда как трафаретное наложение цвета на черный оставляет цвет неизменным.
QPainter::CompositionMode_Overlay 15 Умножает или трафаретно накладывает цвета в зависимости от цвета назначения. Цвет назначения смешивается с цветом источника, чтобы отразить светлоту или темноту назначения.
QPainter::CompositionMode_Darken 16 Выбирается более темный из цветов источника и назначения.
QPainter::CompositionMode_Lighten 17 Выбирается более светлый из цветов источника и назначения.
QPainter::CompositionMode_ColorDodge 18 Цвет назначения осветляется, чтобы отразить цвет источника. Черный цвет источника оставляет цвет назначения неизменным.
QPainter::CompositionMode_ColorBurn 19 Цвет назначения затемняется, чтобы отразить цвет источника. Белый цвет источника оставляет цвет назначения неизменным.
QPainter::CompositionMode_HardLight 20 Умножает или трафаретно накладывает цвета в зависимости от цвета источника. Светлый цвет источника осветлит цвет назначения, тогда как темный цвет источника затемнит цвет назначения.
QPainter::CompositionMode_SoftLight 21 Затемняет или осветляет цвета в зависимости от цвета источника. Аналогично CompositionMode_HardLight.
QPainter::CompositionMode_Difference 22 Вычитает более темный из цветов из более светлого. Рисование белым инвертирует цвет назначения, тогда как рисование черным оставляет цвет назначения неизменным.
QPainter::CompositionMode_Exclusion 23 Аналогично CompositionMode_Difference, но с более низким контрастом. Рисование белым инвертирует цвет назначения, тогда как рисование черным оставляет цвет назначения неизменным.
QPainter::RasterOp_SourceOrDestination 24 Выполняет побитовую операцию OR над пикселями источника и назначения (src OR dst).
QPainter::RasterOp_SourceAndDestination 25 Выполняет побитовую операцию AND над пикселями источника и назначения (src AND dst).
QPainter::RasterOp_SourceXorDestination 26 Выполняет побитовую операцию XOR над пикселями источника и назначения (src XOR dst).
QPainter::RasterOp_NotSourceAndNotDestination 27 Выполняет побитовую операцию NOR над пикселями источника и назначения ((NOT src) AND (NOT dst)).
QPainter::RasterOp_NotSourceOrNotDestination 28 Выполняет побитовую операцию NAND над пикселями источника и назначения ((NOT src) OR (NOT dst)).
QPainter::RasterOp_NotSourceXorDestination 29 Выполняет побитовую операцию, где пиксели источника инвертируются, а затем выполняется XOR с назначением ((NOT src) XOR dst).
QPainter::RasterOp_NotSource 30 Выполняет побитовую операцию, где пиксели источника инвертируются (NOT src).
QPainter::RasterOp_NotSourceAndDestination 31 Выполняет побитовую операцию, где источник инвертируется, а затем выполняется AND с назначением ((NOT src) AND dst).
QPainter::RasterOp_SourceAndNotDestination 32 Выполняет побитовую операцию, где источник выполняет AND с инвертированными пикселями назначения (src AND (NOT dst)).
QPainter::RasterOp_NotSourceOrDestination 33 Выполняет побитовую операцию, где источник инвертируется, а затем выполняется OR с назначением ((NOT src) OR dst).
QPainter::RasterOp_ClearDestination 35 Пиксели в назначении очищаются (устанавливаются в 0) независимо от источника.
QPainter::RasterOp_SetDestination 36 Пиксели в назначении устанавливаются (устанавливаются в 1) независимо от источника.
QPainter::RasterOp_NotDestination 37 Выполняет побитовую операцию, где пиксели назначения инвертируются (NOT dst).
QPainter::RasterOp_SourceOrNotDestination 34 Выполняет побитовую операцию, где источник выполняет OR с инвертированными пикселями назначения (src OR (NOT dst)).

См. также compositionMode(), setCompositionMode(), Режимы композиции, и Пример композиции изображений.

enum QPainter::PixmapFragmentHintflags QPainter::PixmapFragmentHints

Константа Значение Описание
QPainter::OpaqueHint 0x01 Указывает, что фрагменты пиксельного изображения, которые должны быть нарисованы, непрозрачны. Непрозрачные фрагменты потенциально быстрее рисуются.

Это перечисление было введено или изменено в Qt 4.7.

Тип PixmapFragmentHints является псевдонимом для QFlags<PixmapFragmentHint>. Он хранит логическое ИЛИ комбинацию значений PixmapFragmentHint.

См. также QPainter::drawPixmapFragments() и QPainter::PixmapFragment.

enum QPainter::RenderHintflags QPainter::RenderHints

Renderhints используются для указания флагов для QPainter, которые могут или не могут быть учтены любым движком.

Константа Значение Описание
QPainter::Antialiasing 0x01 Указывает, что движок должен применять сглаживание краёв примитивов, если это возможно.
QPainter::TextAntialiasing 0x02 Указывает, что движок должен применять сглаживание текста, если это возможно. Для принудительного отключения сглаживания текста не используйте этот флаг. Вместо этого установите QFont::NoAntialias в стратегии стиля шрифта.
QPainter::SmoothPixmapTransform 0x04 Указывает, что движок должен использовать алгоритм плавного преобразования растрового изображения (например, билинейный), а не ближайшего соседа.
QPainter::HighQualityAntialiasing 0x08 Это значение устарело и будет проигнорировано. Используйте вместо него флаг сглаживания Antialiasing.
QPainter::NonCosmeticDefaultPen 0x10 Это значение устарело, по умолчанию QPen теперь не декоративный.
QPainter::Qt4CompatiblePainting 0x20 Флаг совместимости, указывающий движку использовать те же правила заливки, основанные на X11, что и в Qt 4, где сглаженное рендеринг смещено на чуть меньше, чем полпикселя. Также будет рассматривать созданные по умолчанию пера как декоративные. Может быть полезно при портировании приложения Qt 4 в Qt 5.
QPainter::LosslessImageRendering 0x40 Использовать бестер потерю алгоритм рендеринга изображения, когда это возможно. В настоящее время этот флаг используется только при использовании QPainter для вывода PDF-файла через QPrinter или QPdfWriter, где вызовы drawImage()/drawPixmap() будут кодировать изображения с использованием алгоритма без потерь, а не с потерей сжатия JPEG. Это значение было добавлено в Qt 5.13.

Тип RenderHints является псевдонимом для QFlags<RenderHint>. Он хранит логическое ИЛИ комбинацию значений RenderHint.

См. также renderHints(), setRenderHint(), Качество рендеринга и Пример концентрических окружностей.

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

QPainter::QPainter(QPaintDevice *device)

Создаёт объект отрисовки, который начинает отрисовку на устройстве device сразу.

Этот конструктор удобен для кратковременных объектов отрисовки, например, в QWidget::paintEvent() и должен использоваться только один раз. Конструктор вызывает begin() за вас, а деструктор QPainter автоматически вызывает end().

Вот пример с использованием begin() и end():

void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter p;
    p.begin(this);
    p.drawLine(...);        // drawing code
    p.end();
}

Тот же пример с использованием этого конструктора:

void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    p.drawLine(...);        // drawing code
}

Поскольку конструктор не может предоставить обратную связь, когда инициализация объекта отрисовки завершилась неудачно, вы должны использовать begin() и end() для отрисовки на внешних устройствах, например, принтерах.

См. также begin() и end().

QPainter::QPainter()

Создаёт объект отрисовки.

См. также begin() и end().

QPainter::~QPainter()

Удаляет объект отрисовки.

const QBrush &QPainter::background() const

Возвращает текущую кисть фона.

См. также setBackground() и Параметры.

Qt::BGMode QPainter::backgroundMode() const

Возвращает текущий режим фона.

См. также setBackgroundMode() и Параметры.

bool QPainter::begin(QPaintDevice *device)

Начинает отрисовку на устройстве device и возвращает true в случае успеха; в противном случае возвращает false.

Обратите внимание, что все настройки рисовальщика (setPen(), setBrush() и т. д.) сбрасываются до значений по умолчанию при вызове begin().

Возможные ошибки — серьёзные проблемы, такие как:

painter->begin(0); // impossible - paint device cannot be 0

QPixmap image(0, 0);
painter->begin(&image); // impossible - image.isNull() == true;

painter->begin(myWidget);
painter2->begin(myWidget); // impossible - only one painter at a time

Обратите внимание, что в большинстве случаев можно использовать один из конструкторов вместо begin(), и что end() автоматически выполняется при уничтожении.

Предупреждение: Устройство отрисовки может быть отрисовано только одним объектом отрисовки за раз.

Предупреждение: Отрисовка на QImage с форматом QImage::Format_Indexed8 не поддерживается.

См. также end() и QPainter().

void QPainter::beginNativePainting()

Очищает конвейер отрисовки и подготавливает пользователя к выдаче команд непосредственно в контекст графики нижележащего уровня. Должен быть последован вызовом endNativePainting().

Обратите внимание, что будут сброшены только те состояния, которые изменил нижележащий движок отрисовки. Состояния, которые мы сбрасываем, могут меняться от релиза к релизу. В настоящее время в движке OpenGL 2 сбрасываются следующие состояния:

  • отключено смешивание
  • отключены тесты глубины, трафарета и отсечения
  • активный текстурный блок сброшен до 0
  • маска глубины, функция глубины и значение очистки глубины сброшены до значений по умолчанию
  • маска трафарета, операция трафарета и функция трафарета сброшены до значений по умолчанию
  • текущий цвет сброшен до белого цвета

Например, если пользователь меняет режим полигона OpenGL внутри блока beginNativePaint()/endNativePainting(), он не будет сброшен до состояния по умолчанию функцией endNativePainting(). Вот пример, который показывает смешение команд отрисовки и команд OpenGL:

QPainter painter(this);
painter.fillRect(0, 0, 128, 128, Qt::green);
painter.beginNativePainting();

glEnable(GL_SCISSOR_TEST);
glScissor(0, 0, 64, 64);

glClearColor(1, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);

glDisable(GL_SCISSOR_TEST);

painter.endNativePainting();

Эта функция была добавлена в Qt 4.6.

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

QRectF QPainter::boundingRect(const QRectF &rectangle, int flags, const QString &text)

Возвращает прямоугольник, охватывающий текст text, который будет отрисован внутри заданного прямоугольника rectangle с указанными flags используя текущий шрифт font; то есть функция сообщает вам, где функция drawText() будет отрисовывать, когда ей передаются те же аргументы.

Если текст text не помещается в заданный прямоугольник rectangle с использованием указанных flags, функция возвращает необходимый прямоугольник.

Аргумент flags — это побитовое ИЛИ следующих флагов:

  • Qt::AlignLeft
  • Qt::AlignRight
  • Qt::AlignHCenter
  • Qt::AlignTop
  • Qt::AlignBottom
  • Qt::AlignVCenter
  • Qt::AlignCenter
  • Qt::TextSingleLine
  • Qt::TextExpandTabs
  • Qt::TextShowMnemonic
  • Qt::TextWordWrap
  • Qt::TextIncludeTrailingSpaces

Если установлено несколько горизонтальных или вертикальных флагов выравнивания, результат выравнивания не определён.

См. также drawText(), Qt::Alignment и Qt::TextFlag.

QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)

Это перегруженная функция.

Возвращает прямоугольник, охватывающий текст text, который будет отрисован внутри заданного прямоугольника rectangle с указанными flags используя текущий шрифт font().

QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)

Это перегруженная функция.

Возвращает прямоугольник, охватывающий заданный текст text, который будет отрисован внутри прямоугольника, начинающегося в точке (x, y) с шириной w и высотой h.

QRectF QPainter::boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())

Это перегруженный метод.

Вместо указания флагов как побитового ИЛИ флагов Qt::AlignmentFlag и Qt::TextFlag, этот перегруженный метод принимает аргумент option. Класс QTextOption предоставляет описание общих свойств форматированного текста.

См. также QTextOption.

const QBrush &QPainter::brush() const

Возвращает текущую кисть отрисовки.

См. также QPainter::setBrush() и Параметры.

QPoint QPainter::brushOrigin() const

Возвращает текущее начало кисти.

См. также setBrushOrigin() и Параметры.

QRectF QPainter::clipBoundingRect() const

Возвращает ограничивающую прямоугольник текущей области обрезки, если она установлена; в противном случае возвращает пустой прямоугольник. Обратите внимание, что область обрезки задается в логических координатах.

Ограничивающий прямоугольник не гарантируется как самый узкий.

Эта функция была добавлена в Qt 4.8.

См. также setClipRect(), setClipPath() и setClipRegion().

QPainterPath QPainter::clipPath() const

Возвращает текущую область обрезки в логических координатах.

Предупреждение: QPainter не хранит объединённую область обрезки явно, так как это обрабатывается базовым QPaintEngine, поэтому траектория воссоздаётся по требованию и преобразуется в текущую систему логических координат. Это может быть дорогостоящей операцией.

См. также setClipPath(), clipRegion() и setClipping().

QRegion QPainter::clipRegion() const

Возвращает текущую область обрезки. Обратите внимание, что область обрезки задаётся в логических координатах.

Предупреждение: QPainter не хранит объединённую область обрезки явно, так как это обрабатывается базовым QPaintEngine, поэтому траектория воссоздаётся по требованию и преобразуется в текущую систему логических координат. Это может быть дорогостоящей операцией.

См. также setClipRegion(), clipPath() и setClipping().

QTransform QPainter::combinedTransform() const

Возвращает матрицу преобразования, объединяющую текущее окно/порт и преобразование мира.

См. также setWorldTransform(), setWindow() и setViewport().

QPainter::CompositionMode QPainter::compositionMode() const

Возвращает текущий режим композиции.

См. также CompositionMode и setCompositionMode().

QPaintDevice *QPainter::device() const

Возвращает устройство отрисовки, на котором в данный момент рисует этот объект отрисовки, или nullptr , если объект отрисовки не активен.

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

const QTransform &QPainter::deviceTransform() const

Возвращает матрицу, преобразующую логические координаты в устройство координат платформенно-зависимого устройства отрисовки.

Эта функция только необходима при использовании команд рисования платформы на платформенно-зависимой ручке (Qt::HANDLE), и платформа не выполняет преобразования nativly.

Перечисление QPaintEngine::PaintEngineFeature может быть запрошено для определения того, выполняет ли платформа преобразования или нет.

См. также worldTransform() и QPaintEngine::hasFeature().

void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)

Отрисовывает дугу, заданную указанным rectangle, startAngle и spanAngle.

startAngle и spanAngle должны быть заданы в 1/16-й градуса, т. е. полный круг равен 5760 (16 * 360). Положительные значения углов означают против часовой стрелки, а отрицательные — по часовой стрелке. Ноль градусов соответствует положению «3 часа».

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawArc(rectangle, startAngle, spanAngle);

См. также drawPie(), drawChord() и Система координат.

void QPainter::drawArc(const QRect &rectangle, int startAngle, int spanAngle)

Это перегруженный метод.

Отрисовывает дугу, заданную указанным rectangle, startAngle и spanAngle.

void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)

Это перегруженный метод.

Отрисовывает дугу, заданную прямоугольником, начинающимся в точке (x, y) с указанной width и height, и заданными startAngle и spanAngle.

void QPainter::drawChord(const QRectF &rectangle, int startAngle, int spanAngle)

Отрисовывает хорду, заданную указанным rectangle, startAngle и spanAngle. Хорда заливается текущей кистью.

startAngle и spanAngle должны быть заданы в 1/16-й градуса, т. е. полный круг равен 5760 (16 * 360). Положительные значения углов означают против часовой стрелки, а отрицательные — по часовой стрелке. Ноль градусов соответствует положению «3 часа».

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawChord(rect, startAngle, spanAngle);

См. также drawArc(), drawPie() и Система координат.

void QPainter::drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)

Это перегруженный метод.

Отрисовывает хорду, заданную прямоугольником, начинающимся в точке (x, y) с указанной width и height, и заданными startAngle и spanAngle.

void QPainter::drawChord(const QRect &rectangle, int startAngle, int spanAngle)

Это перегруженный метод.

Отрисовывает хорду, заданную указанным rectangle, startAngle и spanAngle.

void QPainter::drawConvexPolygon(const QPointF *points, int pointCount)

Отрисовывает выпуклый многоугольник, определяемый первыми pointCount точками в массиве points, используя текущую кисть.

static const QPointF points[4] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
    QPointF(90.0, 70.0)
};

QPainter painter(this);
painter.drawConvexPolygon(points, 4);

Первая точка неявно соединяется с последней, а многоугольник заполняется текущей кистью. Если предоставленный многоугольник не является выпуклым, т. е. содержит хотя бы один угол, больший 180 градусов, результаты не определены.

На некоторых платформах (например, X11) функция drawConvexPolygon() может быть быстрее, чем функция drawPolygon().

См. также drawPolygon(), drawPolyline() и Система координат.

void QPainter::drawConvexPolygon(const QPolygonF &polygon)

Это перегруженный метод.

Отрисовывает выпуклый многоугольник, определяемый polygon, используя текущую кисть.

void QPainter::drawConvexPolygon(const QPoint *points, int pointCount)

Это перегруженный метод.

Отрисовывает выпуклый многоугольник, определяемый первыми pointCount точками в массиве points, используя текущую кисть.

void QPainter::drawConvexPolygon(const QPolygon &polygon)

Это перегруженный метод.

Отрисовывает выпуклый многоугольник, определяемый polygon, используя текущую кисть.

void QPainter::drawEllipse(const QRectF &rectangle)

Отрисовывает эллипс, заданный указанным rectangle.

Залитый эллипс имеет размер rectangle.size(). Рисованный эллипс имеет размер rectangle.size() плюс толщина кисти.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawEllipse(rectangle);

См. также drawPie() и Систему координат.

void QPainter::drawEllipse(const QRect &rectangle)

Это перегруженный метод.

Рисует эллипс, заданный заданным прямоугольником rectangle.

void QPainter::drawEllipse(int x, int y, int width, int height)

Это перегруженный метод.

Рисует эллипс, заданный прямоугольником, начинающимся в точке (x, y) с заданной шириной и высотой.

void QPainter::drawEllipse(const QPointF &center, qreal rx, qreal ry)

Это перегруженный метод.

Рисует эллипс, расположенный в точке center с радиусами rx и ry.

Этот метод был введён в Qt 4.4.

void QPainter::drawEllipse(const QPoint &center, int rx, int ry)

Это перегруженный метод.

Рисует эллипс, расположенный в точке center с радиусами rx и ry.

Этот метод был введён в Qt 4.4.

void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)

Рисует глифы, представленные glyphs в точке position. position задаёт край базовой линии для строки глифов. Глифы будут взяты из шрифта, выбранного в glyphs, и по смещениям, заданным в glyphs.

Этот метод был введён в Qt 4.8.

См. также QGlyphRun::setRawFont(), QGlyphRun::setPositions() и QGlyphRun::setGlyphIndexes().

void QPainter::drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)

Рисует прямоугольную область source заданной image в прямоугольник target на устройстве рисования.

Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.

Примечание: См. Рисование высококачественных версий растровых изображений и картинок о том, как это влияет на QImage::devicePixelRatio().

Если изображение необходимо изменить для соответствия результату с меньшим разрешением (например, преобразование из 32-битного в 8-битное), используйте flags, чтобы указать, как вы предпочитаете это сделать.

QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(":/images/myImage.png");

QPainter painter(this);
painter.drawImage(target, image, source);

См. также drawPixmap() и QImage::devicePixelRatio().

void QPainter::drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)

Это перегруженный метод.

Рисует прямоугольную область source заданной image в прямоугольник target на устройстве рисования.

Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.

void QPainter::drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = ...)

Это перегруженный метод.

Рисует прямоугольную область source заданного image с началом в точке point.

void QPainter::drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = ...)

Это перегруженный метод.

Рисует прямоугольную область source заданного image с началом в точке point.

void QPainter::drawImage(const QRectF &rectangle, const QImage &image)

Это перегруженный метод.

Рисует заданное image в заданный rectangle.

Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.

void QPainter::drawImage(const QRect &rectangle, const QImage &image)

Это перегруженный метод.

Рисует заданное image в заданный rectangle.

Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.

void QPainter::drawImage(const QPointF &point, const QImage &image)

Это перегруженный метод.

Рисует заданное image в заданной точке point.

void QPainter::drawImage(const QPoint &point, const QImage &image)

Это перегруженный метод.

Рисует заданное image в заданной точке point.

void QPainter::drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor)

Это перегруженный метод.

Рисует изображение в точке (x, y), копируя часть image на устройство рисования.

(x, y) задаёт верхнюю левую точку на устройстве рисования, на которую будет нарисовано изображение. (sx, sy) задаёт верхнюю левую точку в image, которая будет нарисована. По умолчанию (0, 0).

(sw, sh) задаёт размер рисуемого фрагмента изображения. По умолчанию — вся область (до правого нижнего угла).

void QPainter::drawLine(const QLineF &line)

Рисует линию, определённую line.

QLineF line(10.0, 80.0, 90.0, 20.0);

QPainter(this);
painter.drawLine(line);

См. также drawLines(), drawPolyline() и Систему координат.

void QPainter::drawLine(const QLine &line)

Это перегруженный метод.

Рисует линию, определённую line.

void QPainter::drawLine(int x1, int y1, int x2, int y2)

Это перегруженный метод.

Рисует линию от (x1, y1) до (x2, y2).

void QPainter::drawLine(const QPoint &p1, const QPoint &p2)

Это перегруженный метод.

Рисует линию от p1 до p2.

void QPainter::drawLine(const QPointF &p1, const QPointF &p2)

Это перегруженный метод.

Рисует линию от p1 до p2.

void QPainter::drawLines(const QLineF *lines, int lineCount)

Рисует первые lineCount линий в массиве lines с использованием текущей кисти.

См. также drawLine() и drawPolyline().

void QPainter::drawLines(const QVector<QLineF> &lines)

Это перегруженный метод.

Рисует набор линий, определённых списком lines, с использованием текущей кисти и заливки.

void QPainter::drawLines(const QPointF *pointPairs, int lineCount)

Это перегруженный метод.

Рисует первые lineCount линий в массиве pointPairs с использованием текущей кисти. Линии задаются парами точек, поэтому количество элементов в pointPairs должно быть не меньше lineCount * 2.

void QPainter::drawLines(const QVector<QPointF> &pointPairs)

Это перегруженный метод.

Рисует линию для каждой пары точек в векторе pointPairs с использованием текущей кисти. Если в массиве нечётное количество точек, последняя точка игнорируется.

void QPainter::drawLines(const QLine *lines, int lineCount)

Это перегруженный метод.

Рисует первые lineCount линий в массиве lines с использованием текущей кисти.

void QPainter::drawLines(const QVector<QLine> &lines)

Это перегруженный метод.

Рисует набор линий, определённых списком lines, с использованием текущей кисти и заливки.

void QPainter::drawLines(const QPoint *pointPairs, int lineCount)

Это перегруженный метод.

Рисует первые lineCount линий в массиве pointPairs с использованием текущей кисти.

void QPainter::drawLines(const QVector<QPoint> &pointPairs)

Это перегруженный метод.

Рисует линию для каждой пары точек в векторе pointPairs с использованием текущей кисти.

void QPainter::drawPath(const QPainterPath &path)

Рисует заданный объект path с использованием текущей кисти для контура и текущей заливки для заполнения.

QPainterPath path;
path.moveTo(20, 80);
path.lineTo(20, 30);
path.cubicTo(80, 0, 50, 50, 80, 80);

QPainter painter(this);
painter.drawPath(path);

См. также пример Painter Paths и пример Vector Deformation.

void QPainter::drawPicture(const QPointF &point, const QPicture &picture)

Воспроизводит заданную picture в заданной точке point.

Класс QPicture — это устройство рисования, которое записывает и воспроизводит команды QPainter. Картинка сериализует команды рисования в устройство ввода-вывода в платформенно-независимом формате. Всё, что можно нарисовать на виджете или растровом изображении, также можно сохранить в картинку.

Эта функция делает точно то же самое, что и QPicture::play() при вызове с point = QPoint(0, 0).

QPicture picture;
QPointF point(10.0, 20.0)
picture.load("drawing.pic");

QPainter painter(this);
painter.drawPicture(0, 0, picture);

См. также QPicture::play().

void QPainter::drawPicture(int x, int y, const QPicture &picture)

Это перегруженный метод.

Рисует заданную picture в точке (x, y).

void QPainter::drawPicture(const QPoint &point, const QPicture &picture)

Это перегруженный метод.

Воспроизводит заданную picture в заданной точке point.

void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)

Рисует сектор, определяемый заданным rectangle, startAngle и spanAngle.

Сектор заполняется текущей заливкой.

Угол начала и угол разворота должны быть заданы в 1/16 градуса, т.е. полный круг равен 5760 (16 * 360). Положительные значения углов означают против часовой стрелки, а отрицательные — по часовой стрелке. Ноль градусов находится в положении 3 часа.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawPie(rectangle, startAngle, spanAngle);

См. также drawEllipse(), drawChord() и Систему координат.

void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)

Это перегруженный метод.

Рисует сектор, определяемый прямоугольником, начинающимся в (x, y) с указанной width и height, и заданными startAngle и spanAngle.

void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle)

Это перегруженный метод.

Рисует сектор, определяемый заданным rectangle, startAngle и spanAngle.

void QPainter::drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)

Рисует прямоугольную часть source заданного pixmap в заданный target на устройстве рисования.

Примечание: pixmap масштабируется для соответствия прямоугольнику, если размеры pixmap и прямоугольника не совпадают.

Примечание: См. Рисование высококачественных версий растровых изображений и pixmap о том, как это влияет на QPixmap::devicePixelRatio().

QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QPixmap pixmap(":myPixmap.png");

QPainter(this);
painter.drawPixmap(target, pixmap, source);

Если pixmap — это QBitmap, он рисуется с битами, которые «установлены» с использованием цвета кисти. Если backgroundMode равен Qt::OpaqueMode, «неустановленные» биты рисуются с использованием цвета кисти фона; если backgroundMode равен Qt::TransparentMode, «неустановленные» биты прозрачны. Рисование растровых изображений с градиентными или текстурными цветами не поддерживается.

См. также drawImage() и QPixmap::devicePixelRatio().

void QPainter::drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)

Это перегруженный метод.

Рисует прямоугольную часть source заданного pixmap в заданный target на устройстве рисования.

Примечание: pixmap масштабируется для соответствия прямоугольнику, если размеры pixmap и прямоугольника не совпадают.

void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)

Это перегруженный метод.

Рисует прямоугольную часть с началом (sx, sy), шириной sw и высотой sh заданного pixmap в точке (x, y), с шириной w и высотой h. Если sw или sh равны нулю, используется ширина/высота pixmap и корректируется смещением sx/sy;

void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)

Это перегруженный метод.

Рисует растровое изображение в (x, y) путем копирования части заданного pixmap на устройство рисования.

(x, y) задаёт верхнюю левую точку на устройстве рисования, на которую будет нарисовано изображение. (sx, sy) задаёт верхнюю левую точку в pixmap, которая будет нарисована. По умолчанию (0, 0).

(sw, sh) задаёт размер растрового изображения, которое нужно нарисовать. Значение по умолчанию (0, 0) (и отрицательные значения) означает до нижней правой части растрового изображения.

void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)

Это перегруженный метод.

Рисует прямоугольную часть source заданного pixmap с началом в заданной точке point.

void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)

Это перегруженный метод.

Рисует прямоугольную область source заданного pixmap с началом в заданной point.

void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)

Это перегруженный метод.

Рисует заданное pixmap с началом в заданной point.

void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)

Это перегруженный метод.

Рисует заданное pixmap с началом в заданной point.

void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap)

Это перегруженный метод.

Рисует заданное pixmap в позиции (x, y).

void QPainter::drawPixmap(const QRect &rectangle, const QPixmap &pixmap)

Это перегруженный метод.

Рисует заданное pixmap в заданный rectangle.

Примечание: Pixmap масштабируется для соответствия rectangle, если размеры pixmap и rectangle не совпадают.

void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)

Это перегруженный метод.

Рисует pixmap в прямоугольник с позицией (x, y) с заданной width и height.

void QPainter::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())

Этот метод используется для рисования pixmap или подпрямоугольника pixmap в нескольких позициях с разным масштабом, поворотом и непрозрачностью. fragments — массив из fragmentCount элементов, определяющих параметры, используемые для рисования каждого фрагмента pixmap. Параметр hints может быть использован для передачи подсказок по рисованию.

Этот метод потенциально быстрее, чем несколько вызовов drawPixmap(), поскольку бэкэнд может оптимизировать изменения состояния.

Этот метод был добавлен в Qt 4.7.

См. также QPainter::PixmapFragment и QPainter::PixmapFragmentHint.

void QPainter::drawPoint(const QPointF &position)

Рисует одну точку в заданной position используя текущий цвет пера.

См. также Система координат.

void QPainter::drawPoint(const QPoint &position)

Это перегруженный метод.

Рисует одну точку в заданной position используя текущий цвет пера.

void QPainter::drawPoint(int x, int y)

Это перегруженный метод.

Рисует одну точку в позиции (x, y).

void QPainter::drawPoints(const QPointF *points, int pointCount)

Рисует первые pointCount точек в массиве points используя текущий цвет пера.

См. также Система координат.

void QPainter::drawPoints(const QPolygonF &points)

Это перегруженный метод.

Рисует точки в векторе points.

void QPainter::drawPoints(const QPoint *points, int pointCount)

Это перегруженный метод.

Рисует первые pointCount точек в массиве points используя текущий цвет пера.

void QPainter::drawPoints(const QPolygon &points)

Это перегруженный метод.

Рисует точки в векторе points.

void QPainter::drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)

Рисует многоугольник, определённый первыми pointCount точками в массиве points, используя текущее перо и кисть.

static const QPointF points[4] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
    QPointF(90.0, 70.0)
};

QPainter painter(this);
painter.drawPolygon(points, 4);

Первая точка подразумевается соединённой с последней точкой, и многоугольник заполняется текущей кистью().

Если fillRule равно Qt::WindingFill, многоугольник заполняется алгоритмом заполнения по обходу. Если fillRule равно Qt::OddEvenFill, многоугольник заполняется алгоритмом заполнения чётность-нечётность. См. Qt::FillRule для более подробного описания этих правил заполнения.

См. также drawConvexPolygon(), drawPolyline(), и Система координат.

void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)

Это перегруженный метод.

Рисует многоугольник, определённый заданными points, используя правило заполнения fillRule.

void QPainter::drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)

Это перегруженный метод.

Рисует многоугольник, определённый первыми pointCount точками в массиве points.

void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)

Это перегруженный метод.

Рисует многоугольник, определённый заданными points, используя правило заполнения fillRule.

void QPainter::drawPolyline(const QPointF *points, int pointCount)

Рисует ломаную линию, определённую первыми pointCount точками в points, используя текущее перо.

Заметьте, что в отличие от функции drawPolygon() последняя точка не соединяется с первой, и ломаная линия не заполняется.

static const QPointF points[3] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
};

QPainter painter(this);
painter.drawPolyline(points, 3);

См. также drawLines(), drawPolygon(), и Система координат.

void QPainter::drawPolyline(const QPolygonF &points)

Это перегруженный метод.

Рисует ломаную линию, определённую заданными points, используя текущее перо.

void QPainter::drawPolyline(const QPoint *points, int pointCount)

Это перегруженный метод.

Рисует ломаную линию, определённую первыми pointCount точками в points, используя текущее перо.

void QPainter::drawPolyline(const QPolygon &points)

Это перегруженный метод.

Рисует ломаную линию, определённую заданными points, используя текущее перо.

void QPainter::drawRect(const QRectF &rectangle)

Рисует текущий rectangle с текущим пером и кистью.

Заполненный прямоугольник имеет размер rectangle.size(). Рисуемый прямоугольник имеет размер rectangle.size() плюс толщина пера.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawRect(rectangle);

См. также drawRects(), drawPolygon(), и Система координат.

void QPainter::drawRect(int x, int y, int width, int height)

Это перегруженный метод.

Рисует прямоугольник с верхним левым углом в точке (x, y) и заданной шириной и высотой.

void QPainter::drawRect(const QRect &rectangle)

Это перегруженный метод.

Рисует текущий прямоугольник текущей ручкой и заливкой.

void QPainter::drawRects(const QRectF *rectangles, int rectCount)

Рисует первые rectCount из заданных rectangles, используя текущую ручку и заливку.

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

void QPainter::drawRects(const QVector<QRectF> &rectangles)

Это перегруженный метод.

Рисует заданные rectangles, используя текущую ручку и заливку.

void QPainter::drawRects(const QRect *rectangles, int rectCount)

Это перегруженный метод.

Рисует первые rectCount из заданных rectangles, используя текущую ручку и заливку.

void QPainter::drawRects(const QVector<QRect> &rectangles)

Это перегруженный метод.

Рисует заданные rectangles, используя текущую ручку и заливку.

void QPainter::drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)

Рисует заданный прямоугольник rect с закруглёнными углами.

Аргументы xRadius и yRadius задают радиусы эллипсов, определяющих углы закруглённого прямоугольника. Когда mode равен Qt::RelativeSize, xRadius и yRadius задаются в процентах от половины ширины и высоты прямоугольника соответственно, и должны находиться в диапазоне от 0,0 до 100,0.

Заполненный прямоугольник имеет размер rect.size(). Прямоугольник с обводкой имеет размер rect.size() плюс толщина ручки.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawRoundedRect(rectangle, 20.0, 15.0);

Этот метод был добавлен в Qt 4.4.

См. также drawRect() и QPen.

void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)

Это перегруженный метод.

Рисует заданный прямоугольник x, y, w, h с закруглёнными углами.

Этот метод был добавлен в Qt 4.4.

void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)

Это перегруженный метод.

Рисует заданный прямоугольник rect с закруглёнными углами.

Этот метод был добавлен в Qt 4.4.

void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)

Рисует заданный staticText в заданной точке topLeftPosition.

Текст будет нарисован с использованием шрифта и преобразования, заданных для рисовальщика. Если шрифт и/или преобразование, заданные для рисовальщика, отличаются от тех, что использовались для инициализации макета QStaticText, то макет необходимо пересчитать. Используйте QStaticText::prepare() для инициализации staticText со шрифтом и преобразованием, с помощью которых он будет нарисован позднее.

Если topLeftPosition не совпадает с той, что использовалась при инициализации или последнем рисовании staticText, то при перемещении текста в новую позицию будет небольшая задержка.

Примечание: Если преобразование рисовальщика не аффинное, то staticText будет нарисован с помощью обычных вызовов drawText(), теряя любые потенциальные преимущества производительности.

Примечание: Координата y используется как верхняя точка шрифта.

Этот метод был добавлен в Qt 4.7.

См. также QStaticText.

void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)

Это перегруженный метод.

Рисует staticText в точке topLeftPosition.

Примечание: Координата y используется как верхняя точка шрифта.

Этот метод был добавлен в Qt 4.7.

void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)

Это перегруженный метод.

Рисует staticText в координатах left и top.

Примечание: Координата y используется как верхняя точка шрифта.

Этот метод был добавлен в Qt 4.7.

void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)

Это перегруженный метод.

Рисует заданный текст внутри заданного прямоугольника. Прямоугольник вместе с флагами выравнивания определяет якоря для текста.

QPainter painter(this);
painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject"));

boundingRect (если не nullptr) устанавливается в прямоугольник, который должен охватывать весь текст. Например, на изображении пунктирная линия представляет boundingRect, как рассчитанный функцией, а штриховая линия представляет rectangle:

QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);

const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);

QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));

pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));

Аргумент flags представляет собой битовое ИЛИ следующих флагов:

  • Qt::AlignLeft
  • Qt::AlignRight
  • Qt::AlignHCenter
  • Qt::AlignJustify
  • Qt::AlignTop
  • Qt::AlignBottom
  • Qt::AlignVCenter
  • Qt::AlignCenter
  • Qt::TextDontClip
  • Qt::TextSingleLine
  • Qt::TextExpandTabs
  • Qt::TextShowMnemonic
  • Qt::TextWordWrap
  • Qt::TextIncludeTrailingSpaces

По умолчанию, QPainter рисует текст с антиалиасингом.

Примечание: Координата y прямоугольника используется как верхняя точка шрифта.

См. также Qt::AlignmentFlag, Qt::TextFlag, boundingRect() и layoutDirection().

void QPainter::drawText(const QPointF &position, const QString &text)

Рисует заданный текст с текущим направлением текста, начиная с заданной точки position.

Эта функция не обрабатывает символ перевода строки (\n), так как не может разбить текст на несколько строк и не может отобразить символ перевода строки. Используйте перегрузку QPainter::drawText(), которая принимает прямоугольник, если вы хотите нарисовать несколько строк текста с символом перевода строки или если вы хотите перенос текста.

По умолчанию, QPainter рисует текст с антиалиасингом.

Примечание: Координата y используется как базисная линия шрифта.

См. также setFont() и setPen().

void QPainter::drawText(const QPoint &position, const QString &text)

Это перегруженный метод.

Рисует заданный текст с текущим направлением текста, начиная с заданной точки position.

По умолчанию, QPainter рисует текст с антиалиасингом.

Примечание: Координата y используется как базисная линия шрифта.

См. также setFont() и setPen().

void QPainter::drawText(int x, int y, const QString &text)

Это перегруженный метод.

Рисует заданный текст в позиции (x, y), используя текущее направление текста рисовальщика.

По умолчанию, QPainter рисует текст с антиалиасингом.

Примечание: Координата y используется как базисная линия шрифта.

См. также setFont() и setPen().

void QPainter::drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)

Это перегруженный метод.

Отображает заданный текст text в предоставленной области rectangle в соответствии с указанными флагами flags.

boundingRect (если не равен null) устанавливается в прямоугольник, который должен охватывать весь текст. Например, на рисунке ниже пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет rectangle:

QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);

const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);

QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));

pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));

По умолчанию QPainter отображает текст с антиалиасингом.

Примечание: Координата y области rectangle используется как верхняя граница шрифта.

См. также setFont() и setPen().

void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)

Это перегруженный метод.

Отображает заданный текст text в прямоугольнике с началом в точке (x, y), шириной width и высотой height.

boundingRect (если не равен null) устанавливается в прямоугольник, который должен охватывать весь текст. Например, на рисунке ниже пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет прямоугольник, определённый параметрами x, y, width и height:

QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);

const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);

QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));

pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));

Аргумент flags представляет собой побитовое ИЛИ следующих флагов:

  • Qt::AlignLeft
  • Qt::AlignRight
  • Qt::AlignHCenter
  • Qt::AlignJustify
  • Qt::AlignTop
  • Qt::AlignBottom
  • Qt::AlignVCenter
  • Qt::AlignCenter
  • Qt::TextSingleLine
  • Qt::TextExpandTabs
  • Qt::TextShowMnemonic
  • Qt::TextWordWrap

По умолчанию QPainter отображает текст с антиалиасингом.

Примечание: Значение y используется как верхняя граница шрифта.

См. также Qt::AlignmentFlag, Qt::TextFlag, setFont() и setPen().

void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())

Это перегруженный метод.

Отображает заданный текст text в прямоугольнике rectangle, используя option для управления его позиционированием и ориентацией.

По умолчанию QPainter отображает текст с антиалиасингом.

Примечание: Координата y прямоугольника rectangle используется как верхняя граница шрифта.

См. также setFont() и setPen().

void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())

Отображает плитку pixmap внутри заданного прямоугольника rectangle с началом в заданной точке position.

Вызов drawTiledPixmap() похож на вызов drawPixmap() несколько раз для заполнения (плитки) области с помощью pixmap, но потенциально намного эффективнее в зависимости от используемой графической системы.

drawTiledPixmap() обеспечит одинаковый визуальный узор при отображении на дисплеях с высокой плотностью пикселей (с devicePixelRatio > 1) по сравнению с дисплеями с нормальной плотностью пикселей. Установите devicePixelRatio на pixmap для управления размером плитки. Например, установка его в 2 уменьшает ширину и высоту плитки вдвое (как на дисплеях 1x, так и на 2x) и обеспечивает вывод высокого разрешения на дисплеях 2x.

Смещение position всегда находится в системе координат painter, независимо от devicePixelRatio дисплея.

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

void QPainter::drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)

Это перегруженный метод.

Отображает плитку pixmap в указанном прямоугольнике.

(x, y) задаёт верхнюю левую точку в устройстве рисования, на которую будет нарисовано изображение; с заданной width и height. (sx, sy) задаёт верхнюю левую точку в pixmap, которая будет нарисована; по умолчанию (0, 0).

void QPainter::drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = ...)

Это перегруженный метод.

Отображает плитку pixmap внутри заданного прямоугольника rectangle с началом в заданной точке position.

bool QPainter::end()

Завершает рисование. Все ресурсы, используемые во время рисования, освобождаются. Обычно вызывать это не нужно, так как оно вызывается деструктором.

Возвращает true если рисовальщик больше не активен; иначе возвращает false.

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

void QPainter::endNativePainting()

Восстанавливает рисовальщик после ручного выполнения команд рисования низкоуровневыми методами. Позволяет рисовальщику восстановить любые внутренние состояния, на которые он опирается, до вызова других команд рисования.

Эта функция была введена в Qt 4.6.

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

void QPainter::eraseRect(const QRectF &rectangle)

Очищает область внутри заданного прямоугольника rectangle. Эквивалентно вызову

fillRect(rectangle, background()).

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

void QPainter::eraseRect(int x, int y, int width, int height)

Это перегруженный метод.

Очищает область внутри прямоугольника, начинающегося в точке (x, y) с заданной width и height.

void QPainter::eraseRect(const QRect &rectangle)

Это перегруженный метод.

Очищает область внутри заданного прямоугольника rectangle.

void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)

Заполняет заданный контур path с помощью заданной brush. Обводка не рисуется.

В качестве альтернативы вы можете указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть сплошного цвета.

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

void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)

Заполняет заданный прямоугольник rectangle указанной brush.

В качестве альтернативы вы можете указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть сплошного цвета.

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

void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)

Это перегруженный метод.

Заполняет прямоугольник, начинающийся в точке (x, y) с заданной width и height, используя указанную brush.

void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)

Это перегруженный метод.

Заполняет заданный прямоугольник rectangle указанной brush.

void QPainter::fillRect(const QRectF &rectangle, const QColor &color)

Это перегруженный метод.

Заполняет заданный прямоугольник rectangle указанным цветом color.

Эта функция была введена в Qt 4.5.

void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)

Это перегруженный метод.

Заполняет прямоугольник, начинающийся в точке (x, y) заданной width и height, используя заданный color.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(const QRect &rectangle, const QColor &color)

Это перегруженный метод.

Заполняет заданный rectangle указанным color.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)

Это перегруженный метод.

Заполняет прямоугольник, начинающийся в точке (x, y) заданной width и height, используя заданный color.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)

Это перегруженный метод.

Заполняет заданный rectangle указанным color.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)

Это перегруженный метод.

Заполняет заданный rectangle указанным color.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)

Это перегруженный метод.

Заполняет прямоугольник, начинающийся в точке (x, y) заданной width и height, используя указанный стиль заливки style.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)

Это перегруженный метод.

Заполняет заданный rectangle указанным стилем заливки style.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle style)

Это перегруженный метод.

Заполняет заданный rectangle указанным стилем заливки style.

Этот метод был введён в Qt 4.5.

void QPainter::fillRect(int x, int y, int width, int height, QGradient::Preset preset)

Это перегруженный метод.

Заполняет прямоугольник, начинающийся в точке (x, y) заданной width и height, используя заданный тип градиента preset.

Этот метод был введён в Qt 5.12.

void QPainter::fillRect(const QRect &rectangle, QGradient::Preset preset)

Это перегруженный метод.

Заполняет заданный rectangle указанным типом градиента preset.

Этот метод был введён в Qt 5.12.

void QPainter::fillRect(const QRectF &rectangle, QGradient::Preset preset)

Это перегруженный метод.

Заполняет заданный rectangle указанным типом градиента preset.

Этот метод был введён в Qt 5.12.

const QFont &QPainter::font() const

Возвращает текущий шрифт, используемый для отрисовки текста.

См. также setFont(), drawText() и Настройки.

QFontInfo QPainter::fontInfo() const

Возвращает информацию о шрифте для рисовальщика, если рисовальщик активен. В противном случае возвращаемое значение не определено.

См. также font(), isActive() и Настройки.

QFontMetrics QPainter::fontMetrics() const

Возвращает метрики шрифта для рисовальщика, если рисовальщик активен. В противном случае возвращаемое значение не определено.

См. также font(), isActive() и Настройки.

bool QPainter::hasClipping() const

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

См. также setClipping() и Обрезка.

bool QPainter::isActive() const

Возвращает true если был вызван begin() и ещё не был вызван end(); в противном случае возвращает false.

См. также begin() и QPaintDevice::paintingActive().

Qt::LayoutDirection QPainter::layoutDirection() const

Возвращает направление выравнивания, используемое рисовальщиком при отрисовке текста.

См. также QTextOption::textDirection(), setLayoutDirection(), drawText() и Настройки.

qreal QPainter::opacity() const

Возвращает непрозрачность рисовальщика. Значение по умолчанию равно 1.

Этот метод был введён в Qt 4.2.

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

QPaintEngine *QPainter::paintEngine() const

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

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

const QPen &QPainter::pen() const

Возвращает текущую кисть рисовальщика.

См. также setPen() и Настройки.

QPainter::RenderHints QPainter::renderHints() const

Возвращает флаг, который указывает на установленные параметры качества отрисовки для этого рисовальщика.

См. также setRenderHints(), testRenderHint() и Качество отрисовки.

void QPainter::resetTransform()

Сбрасывает все преобразования, сделанные с помощью translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() и setWindow().

См. также Преобразования координат.

void QPainter::restore()

Восстанавливает текущее состояние рисовальщика (выталкивает сохранённое состояние из стека).

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

void QPainter::rotate(qreal angle)

Поворачивает систему координат по часовой стрелке. Указанный параметр angle задан в градусах.

См. также setWorldTransform() и Преобразования координат.

void QPainter::save()

Сохраняет текущее состояние рисовальщика (помещает состояние в стек). save() должен следовать за соответствующим restore(); функция end() разворачивает стек.

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

void QPainter::scale(qreal sx, qreal sy)

Масштабирует систему координат на (sx, sy).

См. также setWorldTransform() и Преобразования координат.

void QPainter::setBackground(const QBrush &brush)

Устанавливает кисть фона рисовальщика на заданную brush.

Фоновый кисть — это кисть, которая заполняется при рисовании непрозрачного текста, пунктирных линий и растровых изображений. Фоновая кисть не оказывает никакого влияния в режиме прозрачного фона (по умолчанию).

См. также background(), setBackgroundMode() и Settings.

void QPainter::setBackgroundMode(Qt::BGMode mode)

Устанавливает режим фона для рисовальщика на заданный mode.

Qt::TransparentMode (по умолчанию) рисует пунктирные линии и текст без установки пикселей фона. Qt::OpaqueMode заполняет эти области текущим цветом фона.

Обратите внимание, что для рисования растрового или пиксельного изображения прозрачно, необходимо использовать QPixmap::setMask().

См. также backgroundMode(), setBackground() и Settings.

void QPainter::setBrush(const QBrush &brush)

Устанавливает кисть рисовальщика на заданную brush.

Кисть рисовальщика определяет, как заполняются фигуры.

См. также brush() и Settings.

void QPainter::setBrush(Qt::BrushStyle style)

Это перегруженный метод.

Устанавливает кисть рисовальщика на чёрный цвет и заданный style.

void QPainter::setBrushOrigin(const QPointF &position)

Устанавливает начало кисти на position.

Начало кисти определяет координаты (0, 0) кисти рисовальщика.

Обратите внимание, что, хотя brushOrigin() было необходимо для адаптации фона родительского виджета в Qt 3, это больше не требуется, так как рисовальщик Qt 4 не рисует фон, если вы не укажете это явно, установив свойство виджета autoFillBackground в значение true.

См. также brushOrigin() и Settings.

void QPainter::setBrushOrigin(int x, int y)

Это перегруженный метод.

Устанавливает начало кисти в точку (x, y).

void QPainter::setBrushOrigin(const QPoint &position)

Это перегруженный метод.

Устанавливает начало кисти на заданную position.

void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)

Включает обрезку и устанавливает путь обрезки для рисовальщика на заданный path с заданной операцией обрезки operation.

Обратите внимание, что путь обрезки задаётся в логических (рисовальщика) координатах.

См. также clipPath(), clipRegion() и Обрезка.

void QPainter::setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)

Включает обрезку и устанавливает область обрезки в заданный rectangle, используя заданную операцию обрезки operation. По умолчанию используется операция замены текущего прямоугольника обрезки.

Обратите внимание, что прямоугольник обрезки задаётся в логических (рисовальщика) координатах.

См. также clipRegion(), setClipping() и Обрезка.

void QPainter::setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)

Это перегруженный метод.

Включает обрезку и устанавливает область обрезки в заданный rectangle, используя заданную операцию обрезки.

void QPainter::setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)

Включает обрезку и устанавливает область обрезки в прямоугольник, начинающийся в точке (x, y) с заданной width и height.

void QPainter::setClipRegion(const QRegion &region, Qt::ClipOperation operation = Qt::ReplaceClip)

Устанавливает область обрезки в заданную region с указанной операцией обрезки operation. По умолчанию используется операция замены текущей области обрезки.

Обратите внимание, что область обрезки задаётся в логических координатах.

См. также clipRegion(), setClipRect() и Обрезка.

void QPainter::setClipping(bool enable)

Включает обрезку, если enable равно true, или отключает обрезку, если enable равно false.

См. также hasClipping() и Обрезка.

void QPainter::setCompositionMode(QPainter::CompositionMode mode)

Устанавливает режим композиции на заданный mode.

Предупреждение: Только QPainter, работающий с QImage, полностью поддерживает все режимы композиции. Режимы RasterOp поддерживаются для X11, как описано в compositionMode().

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

void QPainter::setFont(const QFont &font)

Устанавливает шрифт рисовальщика на заданный font.

Этот шрифт используется последующими функциями drawText(). Цвет текста совпадает с цветом пера.

Если заданный шрифт недоступен, Qt ищет подходящую альтернативу. font() вернёт установленный вами шрифт, а fontInfo() — фактически используемый шрифт (который может совпадать).

См. также font(), drawText() и Settings.

void QPainter::setLayoutDirection(Qt::LayoutDirection direction)

Устанавливает направление выравнивания, используемое рисовальщиком при рисовании текста, на указанное direction.

По умолчанию используется Qt::LayoutDirectionAuto, которое автоматически определяет направление из отрисованного текста.

См. также QTextOption::setTextDirection(), layoutDirection(), drawText() и Settings.

void QPainter::setOpacity(qreal opacity)

Устанавливает непрозрачность рисовальщика на opacity. Значение должно быть в диапазоне от 0,0 до 1,0, где 0,0 — полностью прозрачно, а 1,0 — полностью непрозрачно.

Непрозрачность, заданная для рисовальщика, применяется к каждой операции рисования индивидуально.

Эта функция была добавлена в Qt 4.2.

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

void QPainter::setPen(const QPen &pen)

Устанавливает перо рисовальщика на заданное pen.

pen определяет, как рисовать линии и контуры, а также цвет текста.

См. также pen() и Settings.

void QPainter::setPen(const QColor &color)

Это перегруженный метод.

Устанавливает перо рисовальщика с типом Qt::SolidLine, шириной 1 и указанным цветом color.

void QPainter::setPen(Qt::PenStyle style)

Это перегруженный метод.

Устанавливает перо рисовальщика с заданным style, шириной 1 и чёрным цветом.

void QPainter::setRenderHint(QPainter::RenderHint hint, bool on = true)

Устанавливает заданный параметр качества отрисовки hint для рисовальщика, если on равно true; в противном случае очищает параметр качества отрисовки.

См. также setRenderHints(), renderHints() и Качество отрисовки.

void QPainter::setRenderHints(QPainter::RenderHints hints, bool on = true)

Устанавливает заданные параметры качества отрисовки hints для рисовальщика, если on равно true; в противном случае очищает параметры качества отрисовки.

Эта функция была добавлена в Qt 4.2.

См. также setRenderHint(), renderHints() и Качество отрисовки.

void QPainter::setTransform(const QTransform &transform, bool combine = false)

Устанавливает матрицу преобразования мира. Если combine равно true, указанное преобразование transform комбинируется с текущей матрицей; в противном случае оно заменяет текущую матрицу.

Эта функция была добавлена в Qt 4.3.

См. также transform() и setWorldTransform().

void QPainter::setViewTransformEnabled(bool enable)

Включает преобразования вида, если enable равно true, или отключает преобразования вида, если enable равно false.

См. также viewTransformEnabled() и Преобразование окно-порт.

void QPainter::setViewport(const QRect &rectangle)

Устанавливает прямоугольник области просмотра (viewport) художника на указанный прямоугольник rectangle и включает преобразования вида.

Прямоугольник области просмотра является частью преобразования вида. Область просмотра задаёт систему координат устройства. Её аналог, window(), задаёт логическую систему координат.

По умолчанию прямоугольник области просмотра совпадает с прямоугольником устройства.

См. также viewport(), viewTransformEnabled(), и Преобразование окно-порт.

void QPainter::setViewport(int x, int y, int width, int height)

Это перегруженный метод.

Устанавливает прямоугольник области просмотра художника в прямоугольник, начинающийся в точке (x, y) с заданной width и height.

void QPainter::setWindow(const QRect &rectangle)

Устанавливает окно художника на указанный прямоугольник rectangle и включает преобразования вида.

Прямоугольник окна является частью преобразования вида. Окно задаёт логическую систему координат. Её аналог, viewport(), задаёт систему координат устройства.

По умолчанию прямоугольник окна совпадает с прямоугольником устройства.

См. также window(), viewTransformEnabled(), и Преобразование окно-порт.

void QPainter::setWindow(int x, int y, int width, int height)

Это перегруженный метод.

Устанавливает окно художника в прямоугольник, начинающийся в точке (x, y) с заданной width и height.

void QPainter::setWorldMatrixEnabled(bool enable)

Включает преобразования, если enable равно true, или отключает преобразования, если enable равно false. Матрица преобразования мира не изменяется.

Эта функция была добавлена в Qt 4.2.

См. также worldMatrixEnabled(), worldTransform(), и Преобразования координат.

void QPainter::setWorldTransform(const QTransform &matrix, bool combine = false)

Устанавливает матрицу преобразования мира. Если combine равно true, указанная matrix комбинируется с текущей матрицей; в противном случае она заменяет текущую матрицу.

См. также worldTransform(), transform() и setTransform().

void QPainter::shear(qreal sh, qreal sv)

Выполняет сдвиг системы координат на (sh, sv).

См. также setWorldTransform() и Преобразования координат.

void QPainter::strokePath(const QPainterPath &path, const QPen &pen)

Рисует контур (обводку) пути path с помощью пера, заданного pen.

См. также fillPath() и Рисование.

bool QPainter::testRenderHint(QPainter::RenderHint hint) const

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

Эта функция была добавлена в Qt 4.3.

См. также renderHints() и setRenderHint().

const QTransform &QPainter::transform() const

Псевдоним для worldTransform(). Возвращает матрицу преобразования мира.

См. также setTransform() и worldTransform().

void QPainter::translate(const QPointF &offset)

Перемещает систему координат на заданный offset; то есть, заданный offset добавляется к точкам.

См. также setWorldTransform() и Преобразования координат.

void QPainter::translate(const QPoint &offset)

Это перегруженный метод.

Перемещает систему координат на заданный offset.

void QPainter::translate(qreal dx, qreal dy)

Это перегруженный метод.

Перемещает систему координат на вектор (dx, dy).

bool QPainter::viewTransformEnabled() const

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

См. также setViewTransformEnabled() и worldTransform().

QRect QPainter::viewport() const

Возвращает прямоугольник области просмотра (viewport).

См. также setViewport() и setViewTransformEnabled().

QRect QPainter::window() const

Возвращает прямоугольник окна.

См. также setWindow() и setViewTransformEnabled().

bool QPainter::worldMatrixEnabled() const

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

Эта функция была добавлена в Qt 4.2.

См. также setWorldMatrixEnabled(), worldTransform(), и Система координат.

const QTransform &QPainter::worldTransform() const

Возвращает матрицу преобразования мира.

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qpainter.html

Spec-Zone.ru

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