Класс QPainter
Класс QPainter выполняет низкоуровневую отрисовку на виджетах и других устройствах рисования. Подробнее...
| Заголовок: | #include <QPainter> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследуется от: |
Примечание: Все функции в этом классе являются перевключёнными.
Типы Public
| класс | PixmapFragment |
| перечисление | CompositionMode { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, …, RasterOp_SourceOrNotDestination } |
| перечисление | PixmapFragmentHint { OpaqueHint } |
| флаги | PixmapFragmentHints |
| перечисление | RenderHint { Antialiasing, TextAntialiasing, SmoothPixmapTransform, VerticalSubpixelPositioning, LosslessImageRendering } |
| флаги | RenderHints |
Публичные функции
| 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 ¢er, qreal rx, qreal ry) |
| void | drawEllipse(const QPoint ¢er, 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 = Qt::AutoColor) |
| void | drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| 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 QList<QLineF> &lines) |
| void | drawLines(const QPointF *pointPairs, int lineCount) |
| void | drawLines(const QList<QPointF> &pointPairs) |
| void | drawLines(const QLine *lines, int lineCount) |
| void | drawLines(const QList<QLine> &lines) |
| void | drawLines(const QPoint *pointPairs, int lineCount) |
| void | drawLines(const QList<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 QList<QRectF> &rectangles) |
| void | drawRects(const QRect *rectangles, int rectCount) |
| void | drawRects(const QList<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 = Qt::AbsoluteSize) |
| void | drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
| 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 = QPoint()) |
| 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 ®ion, 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().
Предупреждение: Когда paintdevice является виджетом, 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(). См. пример Аффинные преобразования для визуализации наклоненной системы координат.
См. также пример Преобразования, который демонстрирует, как преобразования влияют на способ, которым QPainter отображает графические примитивы. В частности, он показывает, как порядок преобразований влияет на результат.
|
Пример аффинных преобразований Пример Аффинных преобразований демонстрирует возможность Qt выполнять аффинные преобразования над операциями рисования. Демонстрация также позволяет пользователю экспериментировать с операциями преобразования и немедленно видеть результаты. |
Все операции преобразования действуют на преобразование worldTransform(). Матрица преобразует точку на плоскости в другую точку. Для получения дополнительной информации о матрице преобразования см. документацию по Системе координат и QTransform.
Функция setWorldTransform() может заменить или добавить к текущему worldTransform(). Функция resetTransform() сбрасывает все преобразования, которые были выполнены с помощью translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() и setWindow() функций. Функция deviceTransform() возвращает матрицу, которая преобразует из логических координат в устройство-зависимые координаты устройства рисования. Последняя функция необходима только при использовании команд рисования платформы на платформенно-зависимой ручке, и платформа не выполняет преобразования напрямую.
При рисовании с помощью QPainter мы задаем точки с помощью логических координат, которые затем преобразуются в физические координаты устройства рисования. Сопоставление логических координат с физическими координатами выполняется combinedTransform() QPainter, представляющим собой комбинацию viewport() и window() и worldTransform(). viewport() представляет физические координаты, определяющие произвольный прямоугольник, window() описывает тот же прямоугольник в логических координатах, а worldTransform() совпадает с матрицей преобразования.
См. также Система координат
Обрезка
QPainter может обрезать любую операцию рисования до прямоугольника, области или векторного пути. Текущая область обрезки доступна с помощью функций clipRegion() и clipPath(). Выбор между путями и областями (более быстро) зависит от базового paintEngine(). Например, движок рисования QImage предпочитает пути, а движок рисования X11 предпочитает области. Установка обрезки выполняется в логических координатах художника.
После обрезки QPainter устройство рисования также может обрезать. Например, большинство виджетов обрезают пиксели, используемые дочерними виджетами, и большинство принтеров обрезают область около краев бумаги. Эта дополнительная обрезка не отражается в возвращаемом значении clipRegion() или hasClipping().
Режимы композиции
QPainter предоставляет перечисление CompositionMode, которое определяет правила Портера-Дуффа для композиции цифровых изображений; оно описывает модель для объединения пикселей одного изображения (источника) с пикселями другого изображения (назначения).
Две наиболее распространённые формы композиции — Source и SourceOver. Source используется для рисования непрозрачных объектов на устройстве рисования. В этом режиме каждый пиксель источника заменяет соответствующий пиксель назначения. В режиме композиции SourceOver объект источника прозрачен и рисуется поверх назначения.
Обратите внимание, что преобразование композиции выполняется по пикселям. По этой причине существует разница между использованием самого графического примитива и его ограничивающего прямоугольника: ограничивающий прямоугольник содержит пиксели с alpha == 0 (т. е. пиксели вокруг примитива). Эти пиксели перезаписывают пиксели другого изображения, эффективно очищая их, в то время как примитив перезаписывает только свою собственную область.
|
Пример режимов композиции Пример Режимов композиции, доступный в каталоге примеров Qt, позволяет экспериментировать с различными режимами композиции и немедленно видеть результаты. |
Ограничения
Если вы используете координаты с растровым движком рисования Qt, важно отметить, что, хотя координаты больше +/- 215 могут быть использованы, любое рисование с координатами за пределами этого диапазона не гарантируется для отображения; рисование может быть обрезано. Это связано с использованием short int в реализации.
Контуры, созданные обводчиком Qt, являются только приближением при работе с кривыми формами. В большинстве случаев невозможно представить контур сегмента кривой Безье с помощью другого сегмента кривой Безье, поэтому Qt приближает кривые контуры, используя несколько меньших кривых. По причинам производительности существует ограничение на количество кривых, которые Qt использует для этих контуров, и, следовательно, при использовании больших толщин или масштабов штрихов ошибка контура увеличивается. Для генерации контуров с меньшими ошибками можно использовать класс QPainterPathStroker, который имеет функцию-член setCurveThreshold, которая позволяет пользователю задать допуск ошибки. Другой обходной путь — сначала преобразовать пути в многоугольники, а затем нарисовать многоугольники вместо них.
Производительность
QPainter — это мощный фреймворк, позволяющий разработчикам выполнять множество графических операций, таких как градиенты, режимы композиции и векторную графику. И QPainter может выполнять это на различных аппаратных и программных платформах. Естественно, базовое сочетание аппаратного и программного обеспечения оказывает влияние на производительность, и обеспечение того, чтобы каждая операция была быстрой в сочетании со всеми различными комбинациями режимов композиции, кистей, обрезки, преобразования и т. д., близко к невыполнимой задаче из-за количества перестановок. В качестве компромисса мы выбрали подмножество API QPainter и бэкендов, где производительность гарантированно будет такой же хорошей, как мы можем разумно получить для данной комбинации аппаратного и программного обеспечения.
Бэкенды, на которые мы делаем упор в качестве высокопроизводительных движков, — это:
- Растровый — этот бэкенд реализует все рендеринг в чистом программном обеспечении и всегда используется для рендеринга в QImage. Для оптимальной производительности используйте только типы форматов 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, Пример простого рисования и Функции вспомогательных функций рисования.
Документация по типам членов
перечисление 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 |
Выполняет побитовую операцию ИЛИ над пикселями источника и назначения (src OR dst). |
QPainter::RasterOp_SourceAndDestination |
25 |
Выполняет побитовую операцию И над пикселями источника и назначения (src AND dst). |
QPainter::RasterOp_SourceXorDestination |
26 |
Выполняет побитовую операцию XOR над пикселями источника и назначения (src XOR dst). |
QPainter::RasterOp_NotSourceAndNotDestination |
27 |
Выполняет побитовую операцию НЕ ИЛИ над пикселями источника и назначения ((NOT src) AND (NOT dst)). |
QPainter::RasterOp_NotSourceOrNotDestination |
28 |
Выполняет побитовую операцию НЕ И над пикселями источника и назначения ((NOT src) OR (NOT dst)). |
QPainter::RasterOp_NotSourceXorDestination |
29 |
Выполняет побитовую операцию, где пиксели источника инвертируются, а затем выполняется XOR с назначением ((NOT src) XOR dst). |
QPainter::RasterOp_NotSource |
30 |
Выполняет побитовую операцию, где пиксели источника инвертируются (NOT src). |
QPainter::RasterOp_NotSourceAndDestination |
31 |
Выполняет побитовую операцию, где источник инвертируется, а затем выполняется И с назначением ((NOT src) AND dst). |
QPainter::RasterOp_SourceAndNotDestination |
32 |
Выполняет побитовую операцию, где источник выполняет И с инвертированными пикселями назначения (src AND (NOT dst)). |
QPainter::RasterOp_NotSourceOrDestination |
33 |
Выполняет побитовую операцию, где источник инвертируется, а затем выполняется ИЛИ с назначением ((NOT src) OR dst). |
QPainter::RasterOp_ClearDestination |
35 |
Пиксели в месте назначения очищаются (устанавливаются в 0) независимо от источника. |
QPainter::RasterOp_SetDestination |
36 |
Пиксели в месте назначения устанавливаются (устанавливаются в 1) независимо от источника. |
QPainter::RasterOp_NotDestination |
37 |
Выполняет побитовую операцию, где пиксели назначения инвертируются (NOT dst). |
QPainter::RasterOp_SourceOrNotDestination |
34 |
Выполняет побитовую операцию, где источник выполняет ИЛИ с инвертированными пикселями назначения (src OR (NOT dst)). |
См. также compositionMode(), setCompositionMode(), Режимы композиции, и Пример композиции изображений.
enum QPainter::PixmapFragmentHintflags QPainter::PixmapFragmentHints
| Константа | Значение | Описание |
|---|---|---|
QPainter::OpaqueHint |
0x01 |
Указывает, что фрагменты пиксельных изображений, которые будут нарисованы, непрозрачны. Непрозрачные фрагменты могут быть нарисованы потенциально быстрее. |
Тип PixmapFragmentHints является псевдонимом для QFlags<PixmapFragmentHint>. Он хранит комбинацию ИЛИ значений PixmapFragmentHint.
См. также QPainter::drawPixmapFragments() и QPainter::PixmapFragment.
Перечисление QPainter::RenderHintфлаги QPainter::RenderHints
Renderhints используются для задания флагов для QPainter, которые могут или не могут быть учтены каким-либо движком.
| Постоянная | Значение | Описание |
|---|---|---|
QPainter::Antialiasing |
0x01 |
Указывает, что движок должен выполнять сглаживание краёв примитивов, если это возможно. |
QPainter::TextAntialiasing |
0x02 |
Указывает, что движок должен выполнять сглаживание текста, если это возможно. Чтобы принудительно отключить сглаживание текста, не используйте этот признак. Вместо этого установите QFont::NoAntialias в стратегии стиля шрифта. |
QPainter::SmoothPixmapTransform |
0x04 |
Указывает, что движок должен использовать алгоритм плавного преобразования растрового изображения (например, билинейный), а не ближайшего соседа. |
QPainter::VerticalSubpixelPositioning |
0x08 |
Разрешить позиционирование текста с дробными значениями пикселей по вертикали и горизонтали, если это поддерживается движком шрифта. В настоящее время это поддерживается Freetype на всех платформах, когда предпочтение отсечения составляет QFont::PreferNoHinting, а также на macOS. В большинстве случаев это не улучшит качество отображения, но может увеличить потребление памяти и немного снизить производительность рендеринга текста. Поэтому рекомендуется включать этот признак только в тех случаях, когда это необходимо. Одним из таких случаев может быть выравнивание глифов с другими визуальными примитивами. Это значение было добавлено в Qt 6.1. |
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(drawingCode); // drawing code
p.end();
} Тот же пример с использованием этого конструктора:
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.drawLine(drawingCode); // drawing code
} Поскольку конструктор не может предоставить обратную связь, когда инициализация рисовальщика завершилась неудачно, для рисования на внешних устройствах, например, принтерах, следует использовать begin() и end().
QPainter::QPainter()
Создаёт рисовальщик.
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 не поддерживается.
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();
См. также endNativePainting().
QRectF QPainter::boundingRect(const QRectF &rectangle, int flags, const QString &text)
Возвращает ограничивающую область text, как она будет отображаться при отрисовке внутри заданного rectangle с указанными flags с использованием текущего шрифта; то есть функция сообщает вам, где функция drawText() будет рисовать, если ей будут переданы те же аргументы.
Если text не помещается в заданный rectangle с использованием указанных flags, функция возвращает необходимый прямоугольник.
Аргумент flags — это побитовое ИЛИ следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
Если установлено несколько флагов выравнивания по горизонтали или вертикали, результат выравнивания не определён.
См. также drawText(), Qt::Alignment и Qt::TextFlag.
QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)
Это перегруженная функция.
Возвращает ограничивающую область text, как она будет отображаться при отрисовке внутри заданного rectangle с указанными flags с использованием текущего шрифта.
QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
Это перегруженная функция.
Возвращает ограничивающую область заданного text, как она будет отображаться при отрисовке внутри прямоугольника, начинающегося в точке (x, y) с шириной w и высотой h.
QRectF QPainter::boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Это перегруженная функция.
Вместо указания флагов как побитового ИЛИ Qt::AlignmentFlag и Qt::TextFlag эта перегруженная функция принимает аргумент option. Класс QTextOption описывает общие свойства форматированного текста.
См. также QTextOption.
const QBrush &QPainter::brush() const
Возвращает текущую кисть художника.
См. также QPainter::setBrush() и Параметры.
QPoint QPainter::brushOrigin() const
Возвращает текущий начальный пункт кисти.
См. также setBrushOrigin() и Параметры.
QRectF QPainter::clipBoundingRect() const
Возвращает прямоугольник, ограничивающий текущую область обрезки, если такая область задана; в противном случае возвращает пустой прямоугольник. Обратите внимание, что область обрезки указана в логических координатах.
Прямоугольник, ограничивающий область, не гарантируется как минимальный.
См. также 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) с заданной width и height.
void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry)
Это перегруженный метод.
Рисует эллипс, расположенный в точке center с радиусами rx и ry.
void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)
Это перегруженный метод.
Рисует эллипс, расположенный в точке center с радиусами rx и ry.
void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
Рисует глифы, представленные glyphs в точке position. Точка position задаёт край базовой линии для строки глифов. Глифы будут взяты из шрифта, выбранного в glyphs, и по смещениям, заданным позициями в glyphs.
См. также 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 = Qt::AutoColor)
Это перегруженный метод.
Рисует прямоугольную область source заданного изображения image с началом в заданной точке point.
void QPainter::drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
Это перегруженный метод.
Рисует прямоугольную область 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 QList<QLineF> &lines)
Это перегруженный метод.
Рисует набор линий, определённых списком lines с помощью текущей кисти и заливки.
void QPainter::drawLines(const QPointF *pointPairs, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве pointPairs с помощью текущего пера. Линии задаются парами точек, поэтому количество элементов в pointPairs должно быть не менее lineCount * 2.
void QPainter::drawLines(const QList<QPointF> &pointPairs)
Это перегруженный метод.
Рисует линию для каждой пары точек в векторе pointPairs с помощью текущего пера. Если в массиве нечетное число точек, последняя точка будет проигнорирована.
void QPainter::drawLines(const QLine *lines, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве lines с помощью текущего пера.
void QPainter::drawLines(const QList<QLine> &lines)
Это перегруженный метод.
Рисует набор линий, определённых списком lines, с помощью текущего пера и кисти.
void QPainter::drawLines(const QPoint *pointPairs, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве pointPairs с помощью текущего пера.
void QPainter::drawLines(const QList<QPoint> &pointPairs)
Это перегруженный метод.
Рисует линию для каждой пары точек в векторе pointPairs с помощью текущего пера.
void QPainter::drawPath(const QPainterPath &path)
Рисует заданный путь path с помощью текущего пера для контура и текущей кисти для заливки.
QPainterPath path; path.moveTo(20, 80); path.lineTo(20, 30); path.cubicTo(80, 0, 50, 50, 80, 80); QPainter painter(this); painter.drawPath(path); |
См. также пример Painter Paths и пример Vector Deformation.
void QPainter::drawPicture(const QPointF &point, const QPicture &picture)
Воспроизводит заданную picture в заданной точке point.
Класс QPicture — это устройство рисования, которое записывает и воспроизводит команды QPainter. Картинка сериализует команды рисования в устройство ввода-вывода в платформенно-независимом формате. Всё, что можно нарисовать на виджете или пиксельной карте, также может быть сохранено в картинке.
Эта функция делает точно то же, что и QPicture::play() при вызове с point = QPointF(0, 0).
Примечание: Состояние художника сохраняется этой функцией.
QPicture picture;
QPointF point(10.0, 20.0);
picture.load("drawing.pic");
QPainter painter(this);
painter.drawPicture(0, 0, picture); |
См. также QPicture::play().
void QPainter::drawPicture(int x, int y, const QPicture &picture)
Это перегруженный метод.
Рисует заданную picture в точке (x, y).
void QPainter::drawPicture(const QPoint &point, const QPicture &picture)
Это перегруженный метод.
Воспроизводит заданную picture в заданной точке point.
void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
Рисует сектор, определённый заданным rectangle, startAngle и spanAngle.
Сектор заполняется текущей кистью.
Угол начала и угол сектора должны быть заданы в 1/16 градуса, т.е. полный круг равен 5760 (16 * 360). Положительные значения углов означают против часовой стрелки, а отрицательные значения означают по часовой стрелке. Ноль градусов находится в положении 3 часа.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); int startAngle = 30 * 16; int spanAngle = 120 * 16; QPainter painter(this); painter.drawPie(rectangle, startAngle, spanAngle); |
См. также drawEllipse(), drawChord() и Систему координат.
void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
Это перегруженный метод.
Рисует сектор, определённый прямоугольником, начинающимся в точке (x, y) с заданной width и height, и заданными startAngle и spanAngle.
void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle)
Это перегруженный метод.
Рисует сектор, определённый заданным rectangle, startAngle и spanAngle.
void QPainter::drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
Рисует прямоугольную часть source заданной pixmap в заданную область target в устройстве рисования.
Примечание: Пиксельная карта масштабируется для соответствия прямоугольнику, если размеры пиксельной карты и прямоугольника различаются.
Примечание: См. Рисование версий пиксельных карт и изображений высокого разрешения о том, как это влияет на 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.
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданный pixmap с началом в заданной point.
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданный pixmap с началом в заданной point.
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданный pixmap в позиции (x, y).
void QPainter::drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданный pixmap в заданный rectangle.
Примечание: Pixmap масштабируется для соответствия rectangle, если размеры pixmap и rectangle не совпадают.
void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
Это перегруженный метод.
Рисует pixmap в прямоугольник с позицией (x, y) и заданной width и height.
void QPainter::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
Этот метод используется для рисования pixmap или подпрямоугольника pixmap в нескольких позициях с различным масштабом, поворотом и непрозрачностью. fragments — массив из fragmentCount элементов, определяющих параметры, используемые для рисования каждого фрагмента pixmap. Параметр hints может быть использован для передачи подсказок рисования.
Этот метод потенциально быстрее, чем несколько вызовов drawPixmap(), так как backend может оптимизировать изменения состояния.
См. также QPainter::PixmapFragment и QPainter::PixmapFragmentHint.
void QPainter::drawPoint(const QPointF &position)
Рисует одну точку в заданной position с использованием текущего цвета пера.
См. также Система координат.
void QPainter::drawPoint(const QPoint &position)
Это перегруженный метод.
Рисует одну точку в заданной position с использованием текущего цвета пера.
void QPainter::drawPoint(int x, int y)
Это перегруженный метод.
Рисует одну точку в позиции (x, y).
void QPainter::drawPoints(const QPointF *points, int pointCount)
Рисует первые pointCount точек в массиве points с использованием текущего цвета пера.
См. также Система координат.
void QPainter::drawPoints(const QPolygonF &points)
Это перегруженный метод.
Рисует точки в векторе points.
void QPainter::drawPoints(const QPoint *points, int pointCount)
Это перегруженный метод.
Рисует первые pointCount точек в массиве points с использованием текущего цвета пера.
void QPainter::drawPoints(const QPolygon &points)
Это перегруженный метод.
Рисует точки в векторе points.
void QPainter::drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Рисует многоугольник, определенный первыми pointCount точками в массиве points, используя текущее перо и кисть.
static const QPointF points[4] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(80.0, 30.0),
QPointF(90.0, 70.0)
};
QPainter painter(this);
painter.drawPolygon(points, 4); |
Первая точка неявно соединяется с последней, а многоугольник заполняется текущей кистью().
Если fillRule — Qt::WindingFill, многоугольник заполняется с использованием алгоритма заполнения по обходу. Если fillRule — Qt::OddEvenFill, многоугольник заполняется с использованием алгоритма заполнения четно-нечетно. См. Qt::FillRule для более подробного описания этих правил заполнения.
См. также drawConvexPolygon(), drawPolyline(), и Система координат.
void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Рисует многоугольник, определенный заданными points, используя правило заполнения fillRule.
void QPainter::drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Рисует многоугольник, определенный первыми pointCount точками в массиве points.
void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Рисует многоугольник, определенный заданными points, используя правило заполнения fillRule.
void QPainter::drawPolyline(const QPointF *points, int pointCount)
Рисует ломаную линию, определенную первыми pointCount точками в points, используя текущее перо.
Обратите внимание, что в отличие от функции drawPolygon() последняя точка не соединяется с первой, и ломаная линия не заполняется.
static const QPointF points[3] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(80.0, 30.0),
};
QPainter painter(this);
painter.drawPolyline(points, 3); |
См. также drawLines(), drawPolygon(), и Система координат.
void QPainter::drawPolyline(const QPolygonF &points)
Это перегруженный метод.
Рисует ломаную линию, определенную заданными points, используя текущее перо.
void QPainter::drawPolyline(const QPoint *points, int pointCount)
Это перегруженный метод.
Рисует ломаную линию, определенную первыми pointCount точками в points, используя текущее перо.
void QPainter::drawPolyline(const QPolygon &points)
Это перегруженный метод.
Рисует ломаную линию, определенную заданными points, используя текущее перо.
void QPainter::drawRect(const QRectF &rectangle)
Рисует текущий rectangle с текущим пером и кистью.
Заполненный прямоугольник имеет размер rectangle.size(). Очерченный прямоугольник имеет размер rectangle.size() плюс ширина пера.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); QPainter painter(this); painter.drawRect(rectangle); |
См. также drawRects(), drawPolygon(), и Система координат.
void QPainter::drawRect(int x, int y, int width, int height)
Это перегруженный метод.
Рисует прямоугольник с верхним левым углом в точке (x, y) заданной шириной и высотой.
void QPainter::drawRect(const QRect &rectangle)
Это перегруженный метод.
Рисует текущий прямоугольник с текущим пера и кистью.
void QPainter::drawRects(const QRectF *rectangles, int rectCount)
Рисует первые rectCount из заданных rectangles, используя текущее перо и кисть.
См. также drawRect().
void QPainter::drawRects(const QList<QRectF> &rectangles)
Это перегруженный метод.
Рисует заданные rectangles, используя текущее перо и кисть.
void QPainter::drawRects(const QRect *rectangles, int rectCount)
Это перегруженный метод.
Рисует первые rectCount из заданных rectangles, используя текущее перо и кисть.
void QPainter::drawRects(const QList<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); |
void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Это перегруженный метод.
Рисует заданный прямоугольник x, y, w, h с закругленными углами.
void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Это перегруженный метод.
Рисует заданный прямоугольник rect с закругленными углами.
void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
Рисует заданный staticText в заданной точке topLeftPosition.
Текст будет нарисован с использованием шрифта и преобразования, заданных в рисовальщике. Если шрифт и/или преобразование, заданные в рисовальщике, отличаются от тех, которые использовались при инициализации макета QStaticText, то макет придется пересчитывать. Используйте QStaticText::prepare(), чтобы инициализировать staticText с шрифтом и преобразованием, с помощью которых он будет позже нарисован.
Если topLeftPosition не совпадает с теми значениями, при которых staticText был инициализирован или последний раз нарисован, то при перемещении текста в новую позицию будет небольшая нагрузка.
Примечание: Если преобразование рисовальщика не аффинное, то staticText будет нарисован с использованием обычных вызовов drawText(), теряя любые потенциальные преимущества производительности.
Примечание: Координата y используется как верхняя часть шрифта.
См. также QStaticText.
void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
Это перегруженный метод.
Рисует staticText в точке topLeftPosition.
Примечание: Координата y используется как верхняя часть шрифта.
void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)
Это перегруженный метод.
Рисует staticText в координатах left и top.
Примечание: Координата y используется как верхняя часть шрифта.
void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
Это перегруженный метод.
Рисует заданный text внутри заданного rectangle. rectangle вместе с флагами выравнивания flags определяют якоря для text.
QPainter painter(this);
painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject")); |
boundingRect (если не равен null) устанавливается в прямоугольник, который должен охватывать весь текст. Например, на следующем изображении пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет rectangle:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Аргумент 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 внутри заданного прямоугольника rectangle в соответствии с указанными флагами flags.
Прямоугольник 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())); |
По умолчанию, QPainter отображает текст с антиалиасингом.
Примечание: Координата y прямоугольника rectangle используется как верхняя координата шрифта.
См. также setFont() и setPen().
void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
Это перегруженный метод.
Отображает заданный текст text внутри прямоугольника с началом в точке (x, y), шириной width и высотой height.
Прямоугольник boundingRect (если не равен nullptr) устанавливается в прямоугольник, который должен содержать весь текст. Например, на следующем изображении пунктирная линия представляет boundingRect, вычисленный функцией, а штриховая линия представляет прямоугольник, определённый параметрами x, y, width и height:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Аргумент flags является побитовым дизъюнкцией следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
По умолчанию, QPainter отображает текст с антиалиасингом.
Примечание: Значение y используется как верхняя координата шрифта.
См. также Qt::AlignmentFlag, Qt::TextFlag, setFont(), и setPen().
void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Это перегруженный метод.
Отображает заданный текст text в прямоугольнике rectangle, используя опции option для управления позиционированием, направлением и ориентацией. Опции, указанные в option, переопределяют опции, заданные для объекта QPainter.
По умолчанию, QPainter отображает текст с антиалиасингом.
Примечание: Координата y прямоугольника rectangle используется как верхняя координата шрифта.
См. также setFont() и setPen().
void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
Отображает плитчатую пиктограмму pixmap внутри заданного прямоугольника rectangle с началом в заданной точке position.
Вызов drawTiledPixmap() похож на многократный вызов drawPixmap() для заполнения области пиктограммой, но потенциально может быть гораздо эффективнее в зависимости от используемой операционной системы.
drawTiledPixmap() обеспечит одинаковый визуальный узор плиток на дисплеях высокой плотности пикселей (с devicePixelRatio > 1), по сравнению с дисплеями стандартной плотности. Установите devicePixelRatio для pixmap для управления размером плитки. Например, установка его в 2 уменьшает ширину и высоту плитки вдвое (как на дисплеях 1x, так и 2x), и создаёт высококачественный вывод на дисплеях 2x.
Смещение position всегда в системе координат painter, независимо от devicePixelRatio дисплея.
См. также drawPixmap().
void QPainter::drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
Это перегруженный метод.
Отображает плитчатую пиктограмму pixmap в указанном прямоугольнике.
(x, y) определяет верхнюю левую точку в устройстве рисования, на которое будет нарисовано изображение; с заданной шириной width и высотой height. (sx, sy) определяет верхнюю левую точку в pixmap, которая будет нарисована; по умолчанию (0, 0).
void QPainter::drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = QPoint())
Это перегруженный метод.
Отображает плитчатую пиктограмму pixmap внутри заданного прямоугольника rectangle с началом в заданной точке position.
bool QPainter::end()
Завершает рисование. Все ресурсы, используемые во время рисования, освобождаются. Обычно вызывать это не нужно, так как оно вызывается деструктором.
Возвращает true если painter больше не активен; в противном случае возвращает false.
См. также begin() и isActive().
void QPainter::endNativePainting()
Восстанавливает painter после ручного выполнения команд рисования на уровне ОС. Позволяет painter восстановить любые внутренние состояния, на которые он полагается, прежде чем вызывать другие команды painter.
См. также beginNativePainting().
void QPainter::eraseRect(const QRectF &rectangle)
Удаляет область внутри заданного прямоугольника rectangle. Эквивалентно вызову
fillRect(rectangle, background());
См. также fillRect().
void QPainter::eraseRect(int x, int y, int width, int height)
Это перегруженный метод.
Удаляет область внутри прямоугольника, начинающегося в точке (x, y) с заданной шириной width и высотой height.
void QPainter::eraseRect(const QRect &rectangle)
Это перегруженный метод.
Удаляет область внутри заданного прямоугольника rectangle.
void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)
Заполняет заданный контур path с помощью заданной кисти brush. Контур не отображается.
В качестве альтернативы вы можете указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть твёрдого цвета.
См. также drawPath().
void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)
Заполняет заданный прямоугольник rectangle указанной кистью brush.
В качестве альтернативы вы можете указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть твёрдого цвета.
См. также drawRect().
void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y) с заданной шириной width и высотой height, используя заданную кисть brush.
void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанной кистью brush.
void QPainter::fillRect(const QRectF &rectangle, const QColor &color)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным цветом.
void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y), заданной шириной и высотой, указанным цветом.
void QPainter::fillRect(const QRect &rectangle, const QColor &color)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным цветом.
void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y), заданной шириной и высотой, указанным цветом.
void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным цветом.
void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным цветом.
void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y), заданной шириной и высотой, используя указанный стиль заливки style.
void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным стилем заливки.
void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным стилем заливки.
void QPainter::fillRect(int x, int y, int width, int height, QGradient::Preset preset)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y), заданной шириной и высотой, используя заданный вид градиента preset.
Этот метод был добавлен в Qt 5.12.
void QPainter::fillRect(const QRect &rectangle, QGradient::Preset preset)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным видом градиента.
Этот метод был добавлен в Qt 5.12.
void QPainter::fillRect(const QRectF &rectangle, QGradient::Preset 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.
См. также 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.
Кисть фона — это кисть, которая заполняется при рисовании непрозрачного текста, штриховых линий и растровых изображений. Кисть фона не имеет эффекта в режиме прозрачного фона (который является значением по умолчанию).
END_OF_DOCUMENT_MARKERСм. также background(), setBackgroundMode(), и Settings.
void QPainter::setBackgroundMode(Qt::BGMode mode)
Устанавливает режим фона для рисовальщика на заданный mode.
Qt::TransparentMode (по умолчанию) рисует штрихпунктирные линии и текст без установки пикселей фона. Qt::OpaqueMode заполняет эти области текущим цветом фона.
Обратите внимание, что для рисования битовой карты или пиксельмапа прозрачно, необходимо использовать QPixmap::setMask().
См. также backgroundMode(), setBackground(), и Settings.
void QPainter::setBrush(const QBrush &brush)
Устанавливает кисть рисовальщика на заданную brush.
Кисть рисовальщика определяет, как заполняются фигуры.
void QPainter::setBrush(Qt::BrushStyle style)
Это перегруженный метод.
Устанавливает кисть рисовальщика на черный цвет и указанный style.
void QPainter::setBrushOrigin(const QPointF &position)
Устанавливает начало кисти на position.
Начало кисти задаёт координаты (0, 0) кисти рисовальщика.
Обратите внимание, что в то время как brushOrigin() была необходима для адаптации фона родительского виджета в Qt 3, в Qt 4 этого больше нет, так как рисовальщик Qt не рисует фон, если вы явно не укажете это, установив свойство виджета 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 ®ion, 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() вернёт то, что вы установили с помощью setFont(), а 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 — полностью непрозрачно.
Непрозрачность, установленная на рисовальщике, применяется к каждой операции рисования индивидуально.
См. также opacity().
void QPainter::setPen(const QPen &pen)
Устанавливает перо рисовальщика на заданное pen.
pen определяет, как рисуются линии и контуры, а также цвет текста.
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; в противном случае очищает параметры качества отрисовки.
См. также setRenderHint(), renderHints(), и Качество отрисовки.
void QPainter::setTransform(const QTransform &transform, bool combine = false)
Устанавливает матрицу преобразования мира. Если combine имеет значение true, указанное преобразование transform комбинируется с текущей матрицей; в противном случае оно заменяет текущую матрицу.
См. также transform() и setWorldTransform().
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. Матрица преобразования мира не изменяется.
См. также 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.
См. также 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.
См. также 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-6.2/qpainter.html