Spec-Zone.ru › Qt 5.14

Класс QPainter

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

Заголовок: #include <QPainter>
qmake: QT += gui
Наследуется от:

QStylePainter

  • Список всех членов, включая унаследованные
  • Устаревшие члены

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

Типы

класс PixmapFragment
перечисление РежимСоставления { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, …, RasterOp_SourceOrNotDestination }
перечисление ПодсказкаPixmapFragment { OpaqueHint }
флаги ПодсказкиPixmapFragment
перечисление ПараметрОтображения { Antialiasing, TextAntialiasing, SmoothPixmapTransform, HighQualityAntialiasing, NonCosmeticDefaultPen, …, 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(), которая стирает область внутри заданного прямоугольника.

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

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

Пример Basic Drawing демонстрирует, как отображать базовые графические примитивы в различных стилях с помощью класса 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.

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

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

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

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

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

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

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

nop rotate() scale() translate()

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

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

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

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

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

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

При рисовании с помощью QPainter мы задаем точки, используя логические координаты, которые затем преобразуются в физические координаты устройства рисования. Сопоставление логических координат с физическими координатами обрабатывается функцией QPainter 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%">
Пример режимов композиции

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

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

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

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

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

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

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

  • Raster — Этот бэкэнд реализует все отрисовки в чистом программном обеспечении и всегда используется для отрисовки в 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 является typedef для QFlags<PixmapFragmentHint>. Он хранит комбинацию значений PixmapFragmentHint, объединенных операцией OR.

См. также 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)

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

Если текст не помещается в заданный прямоугольник, используя заданные 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)

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

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

QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &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), и платформа не выполняет преобразования напрямую.

Перечисление 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) задаёт размер изображения, которое будет нарисовано. По умолчанию (0, 0) (и отрицательное значение) означает рисование до правого нижнего угла изображения.

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 и пример деформации векторов.

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.

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

Значения 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 в устройстве рисования.

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

Примечание: См. Рисование высококачественных версий пиксельных карт и изображений о том, как это влияет на 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 в устройстве рисования.

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

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 равны нулю, используется ширина/высота пиксельной карты и корректируется смещением 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.

END_OF_DOCUMENT_MARKER

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 масштабируется для соответствия прямоугольнику, если размеры 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) и заданной width и height.

void QPainter::drawRect(const QRect &rectangle)

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

Рисует текущий прямоугольник 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.

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

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

Примечание: Если преобразование painter не аффинное, то 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)

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

Рисует заданный text в пределах заданного rectangle. rectangle и флаги выравнивания определяют якоря для text.

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 в rectangle используется как верхняя часть шрифта.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 прямоугольника используется как верхняя граница шрифта.

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

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

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

Рисует заданный текст внутри прямоугольника с началом в точке (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())

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

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

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

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

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

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

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

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

drawTiledPixmap() будет создавать тот же визуальный узор при масштабировании с высоким DPI (devicePixelRatio > 1), что и при нормальном DPI. Установите devicePixelRatio на pixmap для управления размером плитки. Например, установка значения в 2 уменьшает ширину и высоту плитки в 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, внутри заданного прямоугольника с началом в заданной position.

bool QPainter::end()

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

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

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

void QPainter::endNativePainting()

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

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

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

void QPainter::eraseRect(const QRectF &rectangle)

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

fillRect(rectangle, background()).

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

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

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

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

void QPainter::eraseRect(const QRect &rectangle)

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

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

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

Заполняет заданный контур заданной заливкой. Обводка не рисуется.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

END_OF_DOCUMENT_MARKER

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() и Параметры.

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().

END_OF_DOCUMENT_MARKER

void QPainter::setViewTransformEnabled(bool enable)

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

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

void QPainter::setViewport(const QRect &rectangle)

Устанавливает прямоугольник области просмотра художника на заданный прямоугольник 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

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

См. также 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.14/qpainter.html

Spec-Zone.ru

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