Класс QPainter
Класс QPainter выполняет низкоуровневую отрисовку на виджетах и других устройствах отрисовки. Подробнее...
| Заголовок: | #include <QPainter> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Наследуется от: |
Примечание: Все функции в этом классе являются повторно входящими.
Открытые типы
| класс | 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(), которая стирает область внутри заданного прямоугольника.
Все эти функции имеют целочисленные и с плавающей точкой версии.
|
Пример базовой отрисовки Пример Основной отрисовки демонстрирует, как отображать базовые графические примитивы в различных стилях с помощью класса QPainter. |
Если вам нужно нарисовать сложную фигуру, особенно если вам нужно сделать это многократно, рассмотрите создание QPainterPath и отрисовку её с помощью drawPath().
|
Пример путей отрисовки Класс QPainterPath предоставляет контейнер для операций отрисовки, что позволяет создавать и повторно использовать графические фигуры. Пример Путей отрисовки показывает, как использовать пути отрисовки для построения сложных фигур для рендеринга. |
QPainter также предоставляет функцию fillPath(), которая заполняет заданный QPainterPath заданной QBrush, и функцию strokePath(), которая рисует контур заданного пути (т. е. обводит путь).
См. также пример Векторной деформации, который показывает, как использовать расширенные векторные методы для отрисовки текста с помощью QPainterPath, пример Градиентов, который показывает различные типы градиентов, доступные в Qt, и пример Очертания пути, который демонстрирует встроенные штриховки Qt и показывает, как можно использовать пользовательские узоры для расширения диапазона доступных узоров.
| Векторная деформация | Градиенты | Очертания пути |
|---|---|---|
Отрисовка текста выполняется с помощью drawText(). Если вам нужна точная позиция, boundingRect() показывает вам, куда будет выполнена команда drawText().
Отрисовка растровых изображений и картинок
Есть функции для отрисовки растровых изображений/картинок, а именно drawPixmap(), drawImage() и drawTiledPixmap(). Обе drawPixmap() и drawImage() производят одинаковый результат, за исключением того, что drawPixmap() быстрее на экране, а drawImage() может быть быстрее на QPrinter или других устройствах.
Существует функция drawPicture(), которая рисует содержимое всего QPicture. Функция drawPicture() игнорирует все настройки отрисовщика, поскольку QPicture имеет свои собственные настройки.
Отрисовка высокоразрешающих версий растровых изображений и картинок
Высокоразрешающие версии растровых изображений имеют значение коэффициента пикселей устройства, большее 1 (см. QImageReader, QPixmap::devicePixelRatio()). Если оно совпадает со значением базового QPaintDevice, оно рисуется непосредственно на устройстве без применения дополнительных преобразований.
Это, например, случай, когда рисуется QPixmap размером 64x64 пикселя с коэффициентом пикселей устройства 2 на экране с высокой плотностью пикселей, также имеющем коэффициент пикселей устройства 2. Обратите внимание, что растровое изображение фактически имеет размер 32x32 пикселя в пользовательском пространстве. Пути кода в Qt, вычисляющие геометрию макета на основе размера растрового изображения, будут использовать этот размер. В итоге растровое изображение отображается как высокоразрешающее растровое изображение, а не как большое растровое изображение.
Качество рендеринга
Для получения оптимального результата рендеринга с помощью QPainter следует использовать независимую от платформы QImage в качестве устройства отрисовки; т. е. использование QImage гарантирует, что результат имеет идентичное представление пикселей на любой платформе.
Класс QPainter также предоставляет возможность управления качеством рендеринга с помощью перечисления RenderHint и поддержки плавающей точки: все функции рисования примитивов имеют версию с плавающей точкой. Часто они используются в сочетании с подсказкой рендеринга QPainter::Antialiasing.
|
Пример концентрических окружностей Пример Концентрических окружностей демонстрирует улучшенное качество рендеринга, которое можно получить с помощью плавающей точки и сглаживания при отрисовке пользовательских виджетов. Главное окно приложения отображает несколько виджетов, которые отрисовываются с различными комбинациями точности и сглаживания. |
Перечисление RenderHint указывает флаги для QPainter, которые могут или не могут быть учтены каким-либо движком. QPainter::Antialiasing указывает, что движок должен сглаживать края примитивов, если это возможно, QPainter::TextAntialiasing указывает, что движок должен сглаживать текст, если это возможно, а QPainter::SmoothPixmapTransform указывает, что движок должен использовать алгоритм плавного преобразования растровых изображений.
Функция renderHints() возвращает флаг, который определяет параметры рендеринга, установленные для этого отрисовщика. Используйте функцию setRenderHint() для установки или сброса текущих установленных RenderHints.
Преобразования координат
Обычно QPainter работает в собственной системе координат устройства (обычно пиксели), но QPainter хорошо поддерживает преобразования координат.
| nop | rotate() | scale() | translate() |
|---|---|---|---|
Наиболее часто используемые преобразования — масштабирование, поворот, сдвиг и наклон. Используйте функцию scale() для масштабирования системы координат на заданный сдвиг, функцию rotate() для поворота по часовой стрелке и translate() для сдвига (т. е. добавления заданного сдвига к точкам). Также можно повернуть систему координат вокруг начала координат с помощью функции shear(). Обратитесь к примеру Affine Transformations для визуализации наклоненной системы координат.
См. также пример Transformations, который демонстрирует, как преобразования влияют на способ, которым QPainter отображает графические примитивы. В частности, он показывает, как порядок преобразований влияет на результат.
|
Пример преобразований Аффина Пример Affine Transformations демонстрирует способность 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 (т. е. пиксели вокруг примитива). Эти пиксели перезапишут пиксели другого изображения, эффективно очистив их, в то время как примитив перезапишет только свою собственную область.
|
Пример режимов композиции Пример Composition Modes, доступный в каталоге примеров Qt, позволяет экспериментировать с различными режимами композиции и сразу же видеть результаты. |
Ограничения
Если вы используете координаты с растровым движком рисования Qt, важно отметить, что, хотя координаты больше, чем +/- 215, могут быть использованы, любые операции рисования с координатами за пределами этого диапазона не гарантируются для отображения; рисование может быть обрезано. Это связано с использованием short int в реализации.
Контуры, созданные строкером Qt, являются лишь приближением при работе с кривыми формами. В большинстве случаев невозможно представить контур отрезка безиевой кривой с помощью другого отрезка безиевой кривой, и поэтому Qt приближает контуры кривых, используя несколько меньших кривых. По соображениям производительности существует ограничение на количество кривых, используемых Qt для этих контуров, и поэтому при использовании больших ширины пера или масштабов ошибка контура увеличивается. Для создания контуров с меньшими ошибками можно использовать класс QPainterPathStroker, у которого есть функция-член setCurveThreshold, позволяющая пользователю указать толерантность к ошибкам. Другой обходной путь заключается в преобразовании путей в полигоны и последующем рисовании полигонов вместо этого.
Производительность
QPainter — это богатый фреймворк, позволяющий разработчикам выполнять различные графические операции, такие как градиенты, режимы композиции и векторную графику. И QPainter может делать это на различных аппаратных и программных платформах. Естественно, основополагающая комбинация аппаратного и программного обеспечения оказывает некоторое влияние на производительность, и обеспечение того, чтобы каждая операция была быстрой в сочетании со всеми различными комбинациями режимов композиции, кистей, обрезки, преобразования и т. д., приближается к невыполнимой задаче из-за количества перестановок. В качестве компромисса мы выбрали подмножество API QPainter и бэкендов, где производительность гарантируется, насколько это возможно, для данной комбинации аппаратного и программного обеспечения.
Бэкенды, на которых мы делаем упор как на высокопроизводительных движках, это:
- Растровый — этот бэкенд реализует все отрисовки в чистом программном обеспечении и всегда используется для отрисовки в QImages. Для оптимальной производительности используйте только типы форматов QImage::Format_ARGB32_Premultiplied, QImage::Format_RGB32 или QImage::Format_RGB16. Любой другой формат, включая QImage::Format_ARGB32, имеет значительно худшую производительность. Этот движок используется по умолчанию для QWidget и QPixmap.
- OpenGL 2.0 (ES) — этот бэкенд является основным бэкендом для ускоренной графики на аппаратном уровне. Он может работать на настольных компьютерах и встраиваемых устройствах, поддерживающих спецификации OpenGL 2.0 или OpenGL/ES 2.0. Это включает в себя большинство графических процессоров, выпущенных в последние несколько лет. Движок можно включить, используя QPainter на QOpenGLWidget.
Эти операции:
- Простые преобразования, означающие сдвиг и масштабирование, а также повороты на 0, 90, 180, 270 градусов.
-
drawPixmap()в сочетании с простыми преобразованиями и непрозрачностью с режимом преобразования без сглаживания (QPainter::SmoothPixmapTransformне включен в качестве подсказки отрисовки). - Заливка прямоугольника сплошным цветом, градиентом из двух цветов и простыми преобразованиями.
- Обрезка прямоугольника с простыми преобразованиями и обрезкой пересечения.
- Режимы композиции
QPainter::CompositionMode_Sourceи QPainter::CompositionMode_SourceOver. - Заливка прямоугольника с закругленными углами сплошным цветом и градиентом из двух цветов.
- 3x3 пиксельных патчей, с помощью qDrawBorderPixmap.
Этот список дает представление о том, какие функции безопасно использовать в приложении, где производительность имеет решающее значение. В определённых конфигурациях и другие операции могут быть быстрыми, но перед широким использованием рекомендуется провести тестирование и проверку производительности на системе, где будет выполняться конечный продукт. Также существуют случаи, когда дорогостоящие операции допустимы, например, когда результат кешируется в QPixmap.
См. также QPaintDevice, QPaintEngine, Qt SVG, Пример базового рисования и Функции графических утилит.
Документация по типам членов
перечисление QPainter::CompositionMode
Определяет режимы, поддерживаемые для композиции цифровых изображений. Режимы композиции используются для задания того, как пиксели одного изображения, источника, объединяются с пикселями другого изображения, пункта назначения.
Обратите внимание, что битовые режимы растровых операций, обозначенные префиксом RasterOp, поддерживаются только в движках рисования X11 и растрового. Это означает, что единственный способ использовать эти режимы на Mac — через QImage. Режимы RasterOp, обозначенные режимами смешивания, не поддерживаются для перьев и кистей с альфа-компонентами. Также включение подсказки отрисовки QPainter::Antialiasing фактически отключит режимы RasterOp.
Наиболее распространённый тип — SourceOver (часто называемый просто альфа-смешиванием), где пиксель источника смешивается поверх пикселя назначения таким образом, что альфа-компонент источника определяет прозрачность пикселя.
Некоторые режимы композиции требуют альфа-канала в исходном или целевом изображении для получения эффекта. Для оптимальной производительности предпочтительно использовать формат изображения Format_ARGB32_Premultiplied.
При установке режима композиции он применяется ко всем операторам рисования, перьям, кистям, градиентам и отрисовке пиксельных растровых изображений/изображений.
| Постоянная | Значение | Описание |
|---|---|---|
QPainter::CompositionMode_SourceOver |
0 |
Это режим по умолчанию. Альфа исходного изображения используется для смешивания пикселя поверх целевого. |
QPainter::CompositionMode_DestinationOver |
1 |
Альфа целевого изображения используется для смешивания его поверх пикселей источника. Этот режим является обратным режиму CompositionMode_SourceOver. |
QPainter::CompositionMode_Clear |
2 |
Пиксели в целевом изображении очищаются (устанавливаются в полностью прозрачные) независимо от исходных. |
QPainter::CompositionMode_Source |
3 |
Результат — пиксель источника. (Это означает операцию базовой копирования и идентичен SourceOver, когда пиксель источника непрозрачен). |
QPainter::CompositionMode_Destination |
4 |
Результат — пиксель целевого изображения. Это означает, что смешивание не оказывает эффекта. Этот режим является обратным режиму CompositionMode_Source. |
QPainter::CompositionMode_SourceIn |
5 |
Результат — пиксель источника, где альфа уменьшается на альфу целевого изображения. |
QPainter::CompositionMode_DestinationIn |
6 |
Результат — пиксель целевого изображения, где альфа уменьшается на альфу исходного изображения. Этот режим является обратным CompositionMode_SourceIn. |
QPainter::CompositionMode_SourceOut |
7 |
Результат — пиксель источника, где альфа уменьшается на обратную альфу целевого изображения. |
QPainter::CompositionMode_DestinationOut |
8 |
Результат — пиксель целевого изображения, где альфа уменьшается на обратную альфу исходного изображения. Этот режим является обратным CompositionMode_SourceOut. |
QPainter::CompositionMode_SourceAtop |
9 |
Пиксель источника смешивается поверх целевого, при этом альфа пикселя источника уменьшается на альфу пикселя целевого. |
QPainter::CompositionMode_DestinationAtop |
10 |
Пиксель целевого изображения смешивается поверх исходного, при этом альфа пикселя целевого изображения уменьшается на альфу пикселя целевого. Этот режим является обратным CompositionMode_SourceAtop. |
QPainter::CompositionMode_Xor |
11 |
Исходное изображение, альфа которого уменьшена с использованием обратной альфы целевого, объединяется с целевым изображением, альфа которого уменьшена с использованием обратной альфы исходного. CompositionMode_Xor не равно побитовому XOR. |
QPainter::CompositionMode_Plus |
12 |
Складываются альфа и цвет пикселей источника и целевого. |
QPainter::CompositionMode_Multiply |
13 |
Результат — цвет источника, умноженный на цвет целевого. Умножение цвета на белый оставляет цвет без изменений, а умножение на черный даёт черный цвет. |
QPainter::CompositionMode_Screen |
14 |
Цвета источника и целевого изображения инвертируются, а затем умножаются. Экран цвета с белым даёт белый, а с черным — оставляет цвет без изменений. |
QPainter::CompositionMode_Overlay |
15 |
Умножает или экранирует цвета в зависимости от цвета целевого изображения. Цвет целевого изображения смешивается с цветом источника для отражения светлоты или тёмности целевого изображения. |
QPainter::CompositionMode_Darken |
16 |
Выбирается более тёмный из цветов источника и целевого. |
QPainter::CompositionMode_Lighten |
17 |
Выбирается более светлый из цветов источника и целевого. |
QPainter::CompositionMode_ColorDodge |
18 |
Цвет целевого изображения осветляется, отражая цвет источника. Черный цвет источника оставляет цвет целевого изображения без изменений. |
QPainter::CompositionMode_ColorBurn |
19 |
Цвет целевого изображения затемняется, отражая цвет источника. Белый цвет источника оставляет цвет целевого изображения без изменений. |
QPainter::CompositionMode_HardLight |
20 |
Умножает или экранирует цвета в зависимости от цвета источника. Светлый цвет источника осветляет цвет целевого изображения, а тёмный затемняет. |
QPainter::CompositionMode_SoftLight |
21 |
Затемняет или осветляет цвета в зависимости от цвета источника. Аналогично CompositionMode_HardLight. |
QPainter::CompositionMode_Difference |
22 |
Вычитает более тёмный цвет из более светлого. Рисование белым инвертирует цвет целевого изображения, а рисование чёрным оставляет цвет целевого изображения без изменений. |
QPainter::CompositionMode_Exclusion |
23 |
Аналогично CompositionMode_Difference, но с более низким контрастом. Рисование белым инвертирует цвет целевого изображения, а рисование чёрным оставляет цвет целевого изображения без изменений. |
QPainter::RasterOp_SourceOrDestination |
24 |
Выполняет побитовую операцию OR над пикселями источника и целевого (src OR dst). |
QPainter::RasterOp_SourceAndDestination |
25 |
Выполняет побитовую операцию AND над пикселями источника и целевого (src AND dst). |
QPainter::RasterOp_SourceXorDestination |
26 |
Выполняет побитовую операцию XOR над пикселями источника и целевого (src XOR dst). |
QPainter::RasterOp_NotSourceAndNotDestination |
27 |
Выполняет побитовую операцию NOR над пикселями источника и целевого ((NOT src) AND (NOT dst)). |
QPainter::RasterOp_NotSourceOrNotDestination |
28 |
Выполняет побитовую операцию NAND над пикселями источника и целевого ((NOT src) OR (NOT dst)). |
QPainter::RasterOp_NotSourceXorDestination |
29 |
Выполняет побитовую операцию, где пиксели источника инвертируются, а затем выполняются XOR с целевыми ((NOT src) XOR dst). |
QPainter::RasterOp_NotSource |
30 |
Выполняет побитовую операцию инвертирования пикселей источника (NOT src). |
QPainter::RasterOp_NotSourceAndDestination |
31 |
Выполняет побитовую операцию, где исходные пиксели инвертируются, а затем выполняются AND с целевыми ((NOT src) AND dst). |
QPainter::RasterOp_SourceAndNotDestination |
32 |
Выполняет побитовую операцию, где исходные пиксели выполняются AND с инвертированными целевыми пикселями (src AND (NOT dst)). |
QPainter::RasterOp_NotSourceOrDestination |
33 |
Выполняет побитовую операцию, где исходные пиксели инвертируются, а затем выполняются OR с целевыми ((NOT src) OR dst). |
QPainter::RasterOp_ClearDestination |
35 |
Пиксели в целевом изображении очищаются (устанавливаются в 0) независимо от исходных. |
QPainter::RasterOp_SetDestination |
36 |
Пиксели в целевом изображении устанавливаются (устанавливаются в 1) независимо от исходных. |
QPainter::RasterOp_NotDestination |
37 |
Выполняет побитовую операцию инвертирования пикселей целевого изображения (NOT dst). |
QPainter::RasterOp_SourceOrNotDestination |
34 |
Выполняет побитовую операцию, где исходные пиксели выполняются OR с инвертированными целевыми пикселями (src OR (NOT dst)). |
См. также compositionMode(), setCompositionMode(), Режимы композиции и Пример композиции изображений.
enum QPainter::PixmapFragmentHintflags QPainter::PixmapFragmentHints
| Постоянная | Значение | Описание |
|---|---|---|
QPainter::OpaqueHint |
0x01 |
Указывает, что фрагменты растрового изображения, которые должны быть нарисованы, непрозрачны. Непрозрачные фрагменты, возможно, быстрее отрисовываются. |
Тип PixmapFragmentHints является типом-псевдонимом для QFlags<PixmapFragmentHint>. Он хранит логическое ИЛИ комбинацию значений PixmapFragmentHint.
См. также QPainter::drawPixmapFragments() и QPainter::PixmapFragment.
enum QPainter::RenderHintflags QPainter::RenderHints
Renderhints используются для указания флагов для QPainter, которые могут или не могут быть учтены каким-либо движком.
| Константа | Значение | Описание |
|---|---|---|
QPainter::Antialiasing |
0x01 |
Указывает, что движок должен выполнить сглаживание краёв примитивов, если это возможно. |
QPainter::TextAntialiasing |
0x02 |
Указывает, что движок должен выполнить сглаживание текста, если это возможно. Чтобы принудительно отключить сглаживание текста, не используйте этот флаг. Вместо этого установите QFont::NoAntialias для стратегии стиля шрифта. |
QPainter::SmoothPixmapTransform |
0x04 |
Указывает, что движок должен использовать алгоритм плавного преобразования пиксельной карты (такой как билинейный), а не ближайшего соседа. |
QPainter::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.
END_OF_DOCUMENT_MARKERconst 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)
Это перегруженный метод.
Рисует эллипс, определяемый заданным прямоугольником.
void QPainter::drawEllipse(int x, int y, int width, int height)
Это перегруженный метод.
Рисует эллипс, определяемый прямоугольником, начинающимся в точке (x, y) с заданной шириной и высотой.
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).
Примечание: Состояние painter сохраняется этой функцией.
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 в заданной точке.
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 равны нулю, используется ширина/высота pixmap и корректируется смещением sx/sy;
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
Это перегруженный метод.
Рисует растровое изображение в (x, y) путем копирования части заданного pixmap в устройство рисования.
(x, y) задаёт верхнюю левую точку в устройстве рисования, на которую будет нарисовано изображение. (sx, sy) задаёт верхнюю левую точку в pixmap, которая будет нарисована. По умолчанию (0, 0).
(sw, sh) задаёт размер изображения, которое будет нарисовано. По умолчанию (0, 0) (и отрицательные значения) означают до правого нижнего угла изображения.
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
Это перегруженный метод.
Рисует прямоугольную часть source заданного pixmap с началом в заданной точке point.
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)
Это перегруженный метод.
Рисует прямоугольную часть source заданного pixmap с началом в заданной точке point.
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)
Это перегруженный метод.
Отображает заданный pixmap с началом в заданной точке point.
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)
Это перегруженный метод.
Отображает заданный pixmap с началом в заданной точке point.
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap)
Это перегруженный метод.
Отображает заданный pixmap в позиции (x, y).
void QPainter::drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
Это перегруженный метод.
Отображает заданный pixmap в заданный rectangle.
Примечание: pixmap масштабируется для соответствия rectangle, если размеры pixmap и rectangle не совпадают.
void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
Это перегруженный метод.
Отображает pixmap в прямоугольник в позиции (x, y) с заданной width и height.
void QPainter::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
Этот метод используется для отображения pixmap или подпрямоугольника pixmap в нескольких позициях с различным масштабом, поворотом и непрозрачностью. fragments — массив из fragmentCount элементов, определяющих параметры отображения каждого фрагмента pixmap. Параметр hints может использоваться для передачи параметров отображения.
Этот метод потенциально быстрее, чем несколько вызовов drawPixmap(), так как бэкенд может оптимизировать изменения состояния.
См. также QPainter::PixmapFragment и QPainter::PixmapFragmentHint.
void QPainter::drawPoint(const QPointF &position)
Отображает одиночную точку в заданной позиции position с использованием текущего цвета пера.
См. также Система координат.
void QPainter::drawPoint(const QPoint &position)
Это перегруженный метод.
Отображает одиночную точку в заданной позиции position с использованием текущего цвета пера.
void QPainter::drawPoint(int x, int y)
Это перегруженный метод.
Отображает одиночную точку в позиции (x, y).
void QPainter::drawPoints(const QPointF *points, int pointCount)
Отображает первые pointCount точек в массиве points с использованием текущего цвета пера.
См. также Система координат.
void QPainter::drawPoints(const QPolygonF &points)
Это перегруженный метод.
Отображает точки в векторе points.
void QPainter::drawPoints(const QPoint *points, int pointCount)
Это перегруженный метод.
Отображает первые pointCount точек в массиве points с использованием текущего цвета пера.
void QPainter::drawPoints(const QPolygon &points)
Это перегруженный метод.
Отображает точки в векторе points.
void QPainter::drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Отображает многоугольник, определяемый первыми pointCount точками в массиве points, с использованием текущего пера и кисти.
static const QPointF points[4] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(80.0, 30.0),
QPointF(90.0, 70.0)
};
QPainter painter(this);
painter.drawPolygon(points, 4); |
Первая точка неявно соединяется с последней, а многоугольник заполняется текущей кистью().
Если fillRule равно Qt::WindingFill, многоугольник заполняется алгоритмом заполнения по огибающей. Если fillRule равно Qt::OddEvenFill, многоугольник заполняется алгоритмом заполнения по нечётности.
См. Qt::FillRule для более подробного описания этих правил заполнения.
См. также drawConvexPolygon(), drawPolyline() и Система координат.
void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Отображает многоугольник, определяемый заданными points, с использованием правила заполнения fillRule.
void QPainter::drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Отображает многоугольник, определяемый первыми pointCount точками в массиве points.
void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Отображает многоугольник, определяемый заданными points, с использованием правила заполнения fillRule.
void QPainter::drawPolyline(const QPointF *points, int pointCount)
Отображает ломаную линию, определяемую первыми pointCount точками в points, с использованием текущего пера.
Обратите внимание, что в отличие от функции drawPolygon(), последняя точка не соединяется с первой, и ломаная линия не заполняется.
static const QPointF points[3] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(80.0, 30.0),
};
QPainter painter(this);
painter.drawPolyline(points, 3); |
См. также drawLines(), drawPolygon() и Система координат.
void QPainter::drawPolyline(const QPolygonF &points)
Это перегруженный метод.
Отображает ломаную линию, определяемую заданными points, с использованием текущего пера.
void QPainter::drawPolyline(const QPoint *points, int pointCount)
Это перегруженный метод.
Отображает ломаную линию, определяемую первыми pointCount точками в points, с использованием текущего пера.
void QPainter::drawPolyline(const QPolygon &points)
Это перегруженный метод.
Отображает ломаную линию, определяемую заданными points, с использованием текущего пера.
void QPainter::drawRect(const QRectF &rectangle)
Отображает текущий rectangle с использованием текущего пера и кисти.
Заполненный прямоугольник имеет размер rectangle.size(). Нарисованный прямоугольник имеет размер rectangle.size() плюс ширина пера.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); QPainter painter(this); painter.drawRect(rectangle); |
См. также drawRects(), drawPolygon() и Система координат.
void QPainter::drawRect(int x, int y, int width, int height)
Это перегруженный метод.
Рисует прямоугольник с верхним левым углом в (x, y) и заданной width и height.
void QPainter::drawRect(const QRect &rectangle)
Это перегруженный метод.
Отображает текущий rectangle с использованием текущего пера и кисти.
void QPainter::drawRects(const QRectF *rectangles, int rectCount)
Отображает первые rectCount прямоугольников из заданного массива rectangles с использованием текущей кисти и пера.
См. также drawRect().
void QPainter::drawRects(const 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 (если он не равен null) устанавливается в значение, которое должен иметь ограничивающий прямоугольник для помещения всего текста. Например, на следующем изображении пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет rectangle:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
По умолчанию, QPainter отрисовывает текст с антиалиасингом.
Примечание: Координата y прямоугольника rectangle используется как верхняя граница шрифта.
См. также setFont() и setPen().
void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
Это перегруженная функция.
Отрисовывает заданный текст text внутри прямоугольника с началом в точке (x, y), шириной width и высотой height.
Прямоугольник boundingRect (если он не равен null) устанавливается в значение, которое должен иметь ограничивающий прямоугольник для помещения всего текста. Например, на следующем изображении пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет прямоугольник, определяемый x, y, width и height:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Аргумент flags представляет собой побитовое ИЛИ следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
По умолчанию, QPainter отрисовывает текст с антиалиасингом.
Примечание: Значение y используется как верхняя граница шрифта.
См. также Qt::AlignmentFlag, Qt::TextFlag, setFont() и setPen().
void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Это перегруженная функция.
Отрисовывает заданный текст text в прямоугольнике rectangle, используя option для управления позиционированием, направлением и ориентацией. Параметры, заданные в 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 всегда задаётся в системе координат отрисовщика, независимо от 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, если отрисовщик больше не активен; в противном случае возвращает false.
См. также begin() и isActive().
void QPainter::endNativePainting()
Восстанавливает состояние отрисовщика после ручного выполнения команд отрисовки нативного уровня. Позволяет отрисовщику восстановить любые нативные состояния, на которые он полагается, перед вызовом других команд отрисовщика.
См. также beginNativePainting().
void QPainter::eraseRect(const QRectF &rectangle)
Очищает область внутри заданного прямоугольника rectangle. Эквивалентно вызову
fillRect(rectangle, background());
См. также fillRect().
void QPainter::eraseRect(int x, int y, int width, int height)
Это перегруженная функция.
Очищает область внутри прямоугольника, начинающегося в точке (x, y) с заданной шириной width и высотой height.
void QPainter::eraseRect(const QRect &rectangle)
Это перегруженная функция.
Очищает область внутри заданного прямоугольника rectangle.
void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)
Заполняет заданный контур path с помощью заданной brush. Контур не рисуется.
В качестве альтернативы, вы можете указать QColor вместо QBrush; конструктор QBrush (принимающий QColor в качестве аргумента) автоматически создаст кисть с твёрдым заполнением.
См. также drawPath().
void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)
Заполняет заданный прямоугольник rectangle указанной brush.
В качестве альтернативы, вы можете указать QColor вместо QBrush; конструктор QBrush (принимающий QColor в качестве аргумента) автоматически создаст кисть с твёрдым заполнением.
См. также drawRect().
void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)
Это перегруженная функция.
Заполняет прямоугольник, начинающийся в точке (x, y) с заданной шириной width и высотой height, используя указанную brush.
void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)
Это перегруженная функция.
Заполняет заданный прямоугольник rectangle указанной brush.
void QPainter::fillRect(const QRectF &rectangle, const QColor &color)
Это перегруженная функция.
Заполняет заданный прямоугольник rectangle указанным цветом color.
void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)
Это перегруженная функция.
Заполняет прямоугольник, начинающийся в точке (x, y) с заданной шириной width и высотой height, используя указанный цвет color.
END_OF_DOCUMENT_MARKERvoid QPainter::fillRect(const QRect &rectangle, const QColor &color)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным цветом color.
void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y) с заданной width и height, указанным цветом color.
void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным цветом color.
void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным цветом color.
void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y) с заданной width и height, используя указанный стиль заливки style.
void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным стилем заливки style.
void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным стилем заливки style.
[since 5.12] void QPainter::fillRect(int x, int y, int width, int height, QGradient::Preset preset)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y) с заданной width и height, используя заданный пресет градиента preset.
Этот метод был добавлен в Qt 5.12.
[since 5.12] void QPainter::fillRect(const QRect &rectangle, QGradient::Preset preset)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным пресетом градиента preset.
Этот метод был добавлен в Qt 5.12.
[since 5.12] void QPainter::fillRect(const QRectF &rectangle, QGradient::Preset preset)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным пресетом градиента preset.
Этот метод был добавлен в Qt 5.12.
const QFont &QPainter::font() const
Возвращает текущий шрифт, используемый для отрисовки текста.
См. также setFont(), drawText() и Settings.
QFontInfo QPainter::fontInfo() const
Возвращает информацию о шрифте для отрисовщика, если отрисовщик активен. В противном случае значение возврата не определено.
См. также font(), isActive() и Settings.
QFontMetrics QPainter::fontMetrics() const
Возвращает метрики шрифта для отрисовщика, если отрисовщик активен. В противном случае значение возврата не определено.
См. также font(), isActive() и Settings.
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() и Settings.
qreal QPainter::opacity() const
Возвращает непрозрачность отрисовщика. Значение по умолчанию равно 1.
См. также setOpacity().
QPaintEngine *QPainter::paintEngine() const
Возвращает движок отрисовки, на котором в данный момент работает отрисовщик, если отрисовщик активен; в противном случае 0.
См. также isActive().
const QPen &QPainter::pen() const
Возвращает текущую ручку отрисовщика.
См. также setPen() и Settings.
QPainter::RenderHints QPainter::renderHints() const
Возвращает флаг, определяющий настройки рендеринга, установленные для этого отрисовщика.
См. также setRenderHints(), testRenderHint() и Качество рендеринга.
void QPainter::resetTransform()
Сбрасывает все преобразования, выполненные с помощью translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() и setWindow().
См. также Преобразования координат.
void QPainter::restore()
Восстанавливает текущее состояние отрисовщика (выталкивает сохраненное состояние из стека).
См. также save().
void QPainter::rotate(qreal angle)
Поворачивает систему координат по часовой стрелке. Переданный параметр angle задан в градусах.
См. также setWorldTransform() и Преобразования координат.
void QPainter::save()
Сохраняет текущее состояние отрисовщика (добавляет состояние в стек). После save() должен следовать соответствующий restore(); функция end() разворачивает стек.
См. также restore().
void QPainter::scale(qreal sx, qreal sy)
Масштабирует систему координат на (sx, sy).
См. также setWorldTransform() и Преобразования координат.
void QPainter::setBackground(const QBrush &brush)
Устанавливает кисть фона отрисовщика на заданную brush.
Кисть фона используется для заполнения при отрисовке непрозрачного текста, штриховых линий и растровых изображений. Кисть фона не имеет эффекта в режиме прозрачного фона (который является по умолчанию).
См. также background(), setBackgroundMode() и Settings.
void QPainter::setBackgroundMode(Qt::BGMode mode)
Устанавливает режим фона отрисовщика на заданный mode.
Qt::TransparentMode (по умолчанию) рисует штрихованные линии и текст без установки пикселей фона. Qt::OpaqueMode заполняет эти места текущим цветом фона.
Обратите внимание, что для рисования битовой или пиксельной карты прозрачно, необходимо использовать QPixmap::setMask().
См. также backgroundMode(), setBackground() и Settings.
void QPainter::setBrush(const QBrush &brush)
Устанавливает кисть рисовальщика на заданную brush.
Кисть рисовальщика определяет, как заполняются фигуры.
void QPainter::setBrush(Qt::BrushStyle style)
Это перегруженный метод.
Устанавливает кисть рисовальщика на черный цвет и заданный style.
void QPainter::setBrushOrigin(const QPointF &position)
Устанавливает начало кисти в position.
Начало кисти задает координаты (0, 0) кисти рисовальщика.
Обратите внимание, что в то время как brushOrigin() было необходимо для адаптации фона родительского виджета в Qt 3, это больше не нужно, так как рисовальщик Qt 4 не рисует фон, если вы не укажете это явным образом, установив свойство виджета autoFillBackground в true.
См. также brushOrigin() и Settings.
void QPainter::setBrushOrigin(int x, int y)
Это перегруженный метод.
Устанавливает начало кисти в точку (x, y).
void QPainter::setBrushOrigin(const QPoint &position)
Это перегруженный метод.
Устанавливает начало кисти в заданную position.
void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
Включает обрезку и устанавливает путь обрезки рисовальщика на заданный path с заданной операцией обрезки operation.
Обратите внимание, что путь обрезки задаётся в логических (рисовальщика) координатах.
См. также clipPath(), clipRegion() и Обрезка.
void QPainter::setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
Включает обрезку и устанавливает область обрезки на заданный прямоугольник rectangle с использованием заданной операции обрезки operation. По умолчанию операция заменяет текущий прямоугольник обрезки.
Обратите внимание, что прямоугольник обрезки задаётся в логических (рисовальщика) координатах.
См. также clipRegion(), setClipping() и Обрезка.
void QPainter::setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
Это перегруженный метод.
Включает обрезку и устанавливает область обрезки на заданный прямоугольник rectangle с использованием заданной операции обрезки.
void QPainter::setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)
Включает обрезку и устанавливает область обрезки на прямоугольник, начинающийся в точке (x, y) с заданной width и height.
void QPainter::setClipRegion(const QRegion ®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.1/qpainter.html