Класс QPainter
Класс QPainter выполняет низкоуровневую отрисовку на виджетах и других устройствах отрисовки. Подробнее...
| Заголовок: | #include <QPainter> |
| qmake: | QT += gui |
| Наследуется от: |
Примечание: Все функции в этом классе являются реентерабельными.
Публичные типы
| класс | PixmapFragment |
| перечисление | РежимСмешения { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, ..., RasterOp_SourceOrNotDestination } |
| перечисление | ПодсказкаОФрагментеПикселей { OpaqueHint } |
| флаги | ПодсказкиОФрагментеПикселей |
| перечисление | ПараметрОтрисовки { Antialiasing, TextAntialiasing, SmoothPixmapTransform, HighQualityAntialiasing, NonCosmeticDefaultPen, Qt4CompatiblePainting } |
| флаги | ПараметрыОтрисовки |
Публичные функции
| QPainter() | |
| QPainter(QPaintDevice *device) | |
| ~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 |
| 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 QVector<QLineF> &lines) |
| void | drawLines(const QPointF *pointPairs, int lineCount) |
| void | drawLines(const QVector<QPointF> &pointPairs) |
| void | drawLines(const QLine *lines, int lineCount) |
| void | drawLines(const QVector<QLine> &lines) |
| void | drawLines(const QPoint *pointPairs, int lineCount) |
| void | drawLines(const QVector<QPoint> &pointPairs) |
| void | drawPath(const QPainterPath &path) |
| void | drawPicture(const QPointF &point, const QPicture &picture) |
| void | drawPicture(int x, int y, const QPicture &picture) |
| void | drawPicture(const QPoint &point, const QPicture &picture) |
| void | drawPie(const QRectF &rectangle, int startAngle, int spanAngle) |
| void | drawPie(int x, int y, int width, int height, int startAngle, int spanAngle) |
| void | drawPie(const QRect &rectangle, int startAngle, int spanAngle) |
| void | drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source) |
| void | drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source) |
| void | drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh) |
| void | drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh) |
| void | drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source) |
| void | drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source) |
| void | drawPixmap(const QPointF &point, const QPixmap &pixmap) |
| void | drawPixmap(const QPoint &point, const QPixmap &pixmap) |
| void | drawPixmap(int x, int y, const QPixmap &pixmap) |
| void | drawPixmap(const QRect &rectangle, const QPixmap &pixmap) |
| void | drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap) |
| void | drawPixmapFragments(const PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, PixmapFragmentHints hints = PixmapFragmentHints()) |
| void | drawPoint(const QPointF &position) |
| void | drawPoint(const QPoint &position) |
| void | drawPoint(int x, int y) |
| void | drawPoints(const QPointF *points, int pointCount) |
| void | drawPoints(const QPolygonF &points) |
| void | drawPoints(const QPoint *points, int pointCount) |
| void | drawPoints(const QPolygon &points) |
| void | drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolyline(const QPointF *points, int pointCount) |
| void | drawPolyline(const QPolygonF &points) |
| void | drawPolyline(const QPoint *points, int pointCount) |
| void | drawPolyline(const QPolygon &points) |
| void | drawRect(const QRectF &rectangle) |
| void | drawRect(int x, int y, int width, int height) |
| void | drawRect(const QRect &rectangle) |
| void | drawRects(const QRectF *rectangles, int rectCount) |
| void | drawRects(const QVector<QRectF> &rectangles) |
| void | drawRects(const QRect *rectangles, int rectCount) |
| void | drawRects(const QVector<QRect> &rectangles) |
| void | drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
| void | drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = 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 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 QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = Q_NULLPTR) |
| void | drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = Q_NULLPTR) |
| void | drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = Q_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) |
| 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 |
| 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(const QPoint &position) |
| void | setBrushOrigin(int x, int y) |
| 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(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(RenderHint hint, bool on = true) |
| void | setRenderHints(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(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 предоставляет высокооптимизированные функции для выполнения большинства операций рисования, необходимых графическим программам. Он может рисовать всё, от простых линий до сложных фигур, таких как секторы и хорды. Он также может рисовать выровненный текст и пиксельмапы. Обычно он рисует в «естественной» системе координат, но также может выполнять преобразования вида и мира. Класс QPainter может работать с любым объектом, наследующим от класса QPaintDevice.
Типичное использование QPainter — внутри события рисования виджета: создайте и настройте (например, задайте перо или кисть) painter. Затем рисуйте. Не забудьте уничтожить объект QPainter после рисования. Например:
void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
painter.drawText(rect(), Qt::AlignCenter, "Qt");
} Основной функциональностью класса QPainter является рисование, но класс также предоставляет несколько функций, которые позволяют настроить настройки QPainter и качество отрисовки, а также функции управления обрезкой. Кроме того, вы можете управлять тем, как различные фигуры объединяются вместе, задавая режим композиции painter.
Функция isActive() указывает, активен ли painter. Painter активируется функцией begin() и конструктором, принимающим QPaintDevice в качестве аргумента. Функция end() и деструктор деактивируют его.
Вместе с классами QPaintDevice и QPaintEngine класс QPainter составляет основу системы рисования Qt. QPainter — это класс, используемый для выполнения операций рисования. QPaintDevice представляет устройство, на которое можно рисовать с помощью QPainter. QPaintEngine предоставляет интерфейс, который painter использует для рисования на различных типах устройств. Если painter активен, device() возвращает устройство рисования, на котором рисует painter, а paintEngine() возвращает движок рисования, на котором в данный момент работает painter. Дополнительную информацию см. в разделе Система рисования.
Иногда желательно заставить кого-то другого рисовать на необычном QPaintDevice. Класс QPainter поддерживает статическую функцию для этого, setRedirected().
Предупреждение: Когда устройство рисования — это виджет, QPainter может использоваться только внутри функции paintEvent() или в функции, вызываемой функцией paintEvent().
Настройки
Существует несколько настроек, которые вы можете настроить, чтобы QPainter рисовал в соответствии с вашими предпочтениями:
- font() — шрифт, используемый для отрисовки текста. Если объект рисования isActive(), вы можете получить информацию о текущем шрифте и его метриках, используя функции fontInfo() и fontMetrics() соответственно.
- brush() определяет цвет или узор, используемые для заливки фигур.
- pen() определяет цвет или штриховку, используемые для рисования линий или границ.
- backgroundMode() определяет, есть ли background() (фон) или нет, т.е. это либо Qt::OpaqueMode, либо Qt::TransparentMode.
- background() применяется только в случае, когда backgroundMode() равен Qt::OpaqueMode, а pen() — штриховка. В этом случае он описывает цвет фоновых пикселей в штриховке.
- brushOrigin() определяет начало заполнения узором, обычно начало фона виджета.
- viewport(), window(), worldTransform() составляют систему координат преобразования для объекта рисования. Дополнительную информацию см. в разделе Преобразования координат и документации по системе координат.
- hasClipping() указывает, используется ли обрезка. (Устройство отрисовки также использует обрезку.) Если используется обрезка, она применяется к clipRegion().
- layoutDirection() определяет направление выравнивания, используемое объектом рисования при отрисовке текста.
- worldMatrixEnabled() указывает, включено ли преобразование мира.
- viewTransformEnabled() указывает, включено ли преобразование вида.
Обратите внимание, что некоторые из этих настроек дублируют настройки некоторых устройств отрисовки, например, QWidget::font(). Функция QPainter::begin() (или, эквивалентно, конструктор QPainter) копирует эти атрибуты с устройства отрисовки.
В любой момент вы можете сохранить состояние QPainter, вызвав функцию save(), которая сохраняет все доступные настройки в внутреннем стеке. Функция restore() восстанавливает их.
Отрисовка
QPainter предоставляет функции для отрисовки большинства примитивов: drawPoint(), drawPoints(), drawLine(), drawRect(), drawRoundedRect(), drawEllipse(), drawArc(), drawPie(), drawChord(), drawPolyline(), drawPolygon(), drawConvexPolygon() и drawCubicBezier(). Две удобные функции, drawRects() и drawLines(), рисуют заданное количество прямоугольников или линий в заданном массиве QRects или QLines с использованием текущего пера и кисти.
QPainter также предоставляет функцию fillRect(), которая заполняет заданный QRect заданной QBrush, и функцию eraseRect(), которая стирает область внутри заданного прямоугольника.
Все эти функции имеют целые и числа с плавающей точкой версии.
|
Пример базовой отрисовки Пример базовой отрисовки демонстрирует, как отображать базовые графические примитивы в различных стилях с помощью класса QPainter. |
Если вам нужно нарисовать сложную фигуру, особенно если вам нужно делать это многократно, создайте QPainterPath и нарисуйте её с помощью drawPath().
|
Пример с путями рисования Класс QPainterPath предоставляет контейнер для операций отрисовки, позволяя создавать и повторно использовать графические фигуры. Пример путей отрисовки демонстрирует, как пути рисования могут быть использованы для построения сложных фигур для рендеринга. |
QPainter также предоставляет функцию fillPath(), которая заполняет заданный QPainterPath заданной QBrush, и функцию strokePath(), которая рисует контур заданного пути (т.е. обводит путь).
См. также пример деформации векторов, который демонстрирует, как использовать продвинутые векторные техники для рисования текста с помощью QPainterPath, пример градиентов, который демонстрирует различные типы градиентов, доступные в Qt, и пример обводки пути, который демонстрирует встроенные штриховки Qt и показывает, как использовать пользовательские узоры для расширения диапазона доступных узоров.
| Деформация векторов | Градиенты | Обводка пути |
|---|---|---|
Отрисовка текста выполняется с помощью drawText(). Если вам нужна точная позиция, boundingRect() укажет, где будет выполняться команда drawText().
Отрисовка растровых изображений и картинок
Есть функции для отрисовки растровых изображений/картинок: drawPixmap(), drawImage() и drawTiledPixmap(). Обе функции drawPixmap() и drawImage() дают одинаковый результат, за исключением того, что drawPixmap() быстрее на экране, а drawImage() может быть быстрее на принтере QPrinter или других устройствах.
Существует функция drawPicture(), которая рисует содержимое целой QPicture. Функция drawPicture() игнорирует все настройки объекта рисования, так как QPicture имеет собственные настройки.
Отрисовка изображений высокого разрешения
Изображения высокого разрешения имеют значение коэффициента пикселей устройства, большее 1 (см. QImageReader, QPixmap::devicePixelRatio()). Если оно совпадает со значением базового QPaintDevice, изображение рисуется непосредственно на устройстве без дополнительных преобразований.
Например, это происходит при отрисовке QPixmap размером 64x64 пикселя с коэффициентом пикселей устройства 2 на экране с высоким разрешением, также имеющим коэффициент пикселей устройства 2. Обратите внимание, что в пространстве пользователя изображение фактически имеет размер 32x32 пикселя. Пути кода в Qt, которые рассчитывают геометрию макета на основе размера изображения, будут использовать этот размер. В итоге изображение отображается как изображение высокого разрешения, а не большое изображение.
Качество рендеринга
Для получения оптимального результата рендеринга с помощью QPainter следует использовать независимую от платформы QImage в качестве устройства отрисовки; т.е. использование QImage гарантирует, что результат будет иметь идентичное представление пикселей на любой платформе.
Класс QPainter также предоставляет способ управления качеством рендеринга через перечисление RenderHint и поддержку точности с плавающей точкой: Все функции отрисовки примитивов имеют версию с плавающей точкой. Они часто используются в сочетании с параметром рендеринга QPainter::Antialiasing.
|
Пример концентрических окружностей Пример концентрических окружностей демонстрирует улучшенное качество рендеринга, которое можно получить, используя плавающую точку и антиалиасинг при отрисовке пользовательских виджетов. Главное окно приложения отображает несколько виджетов, которые отрисовываются с различными комбинациями точности и антиалиасинга. |
Перечисление RenderHint задаёт флаги для QPainter, которые могут или не могут быть учтены конкретным движком. QPainter::Antialiasing указывает, что движок должен выполнять антиалиасинг краёв примитивов, если это возможно, QPainter::TextAntialiasing указывает, что движок должен выполнять антиалиасинг текста, если это возможно, а QPainter::SmoothPixmapTransform указывает, что движок должен использовать алгоритм плавной трансформации растровых изображений.
Функция renderHints() возвращает флаг, который указывает параметры рендеринга, установленные для данного объекта рисования. Используйте функцию setRenderHint(), чтобы установить или сбросить текущие RenderHints.
Преобразования координат
Обычно QPainter работает в собственной системе координат устройства (обычно пиксели), но QPainter хорошо поддерживает преобразования координат.
| nop | rotate() | scale() | translate() |
|---|---|---|---|
Наиболее часто используемые преобразования — масштабирование, поворот, сдвиг и наклон. Используйте функцию scale() для масштабирования системы координат на заданный сдвиг, функцию rotate() для поворота по часовой стрелке и функцию translate() для сдвига (т. е. добавления заданного сдвига к точкам). Также можно наклонить систему координат вокруг начала координат, используя функцию shear(). См. пример Аффинных преобразований для визуализации наклонённой системы координат.
См. также пример Преобразований, который демонстрирует, как преобразования влияют на способ, которым QPainter отрисовывает графические примитивы. В частности, он демонстрирует, как порядок преобразований влияет на результат.
|
Пример аффинных преобразований Пример Аффинных преобразований демонстрирует возможность Qt выполнять аффинные преобразования над операциями рисования. Демонстрация также позволяет пользователю экспериментировать с операциями преобразования и немедленно видеть результаты. |
Все операции преобразования действуют на преобразование worldTransform(). Матрица преобразует точку на плоскости в другую точку. Для получения дополнительной информации о матрице преобразования см. документацию по Системе координат и QTransform.
Функция setWorldTransform() может заменить или добавить к текущему worldTransform(). Функция resetTransform() сбрасывает все преобразования, которые были выполнены с использованием функций translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() и setWindow(). Функция deviceTransform() возвращает матрицу, преобразующую логические координаты в координаты устройства платформозависимого устройства рисования. Последняя функция необходима только при использовании команд рисования платформы на платформозависимой ручке, и платформа не выполняет преобразования нативно.
При рисовании с помощью QPainter мы задаём точки, используя логические координаты, которые затем преобразуются в физические координаты устройства рисования. Сопоставление логических координат с физическими координатами обрабатывается QPainter’s combinedTransform(), сочетанием viewport() и window() и worldTransform(). viewport() представляет физические координаты, определяющие произвольную прямоугольную область, window() описывает тот же прямоугольник в логических координатах, а worldTransform() идентичен матрице преобразования.
См. также Систему координат
Обрезка
QPainter может обрезать любую операцию рисования до прямоугольника, области или векторного пути. Текущая обрезка доступна с помощью функций clipRegion() и clipPath(). Выбор между путями и областями (скорость) зависит от базового paintEngine(). Например, движок рисования QImage предпочитает пути, а движок рисования X11 предпочитает области. Установка обрезки выполняется в логических координатах художника.
После обрезки QPainter, устройство рисования также может обрезать. Например, большинство виджетов обрезают пиксели, используемые дочерними виджетами, и большинство принтеров обрезают область рядом с краями бумаги. Эта дополнительная обрезка не отражается в возвращаемом значении clipRegion() или hasClipping().
Режимы композиции
QPainter предоставляет перечисление CompositionMode, которое определяет правила Портера-Даффа для композиции цифровых изображений; это описывает модель объединения пикселей одного изображения (источника) с пикселями другого изображения (назначения).
Две наиболее распространённые формы композиции — Source и SourceOver. Source используется для рисования непрозрачных объектов на устройстве рисования. В этом режиме каждый пиксель источника заменяет соответствующий пиксель назначения. В режиме композиции SourceOver источник прозрачен и нарисован поверх назначения.
Обратите внимание, что преобразование композиции работает по пикселям. Поэтому существует разница между использованием самого графического примитива и его ограничивающего прямоугольника: ограничивающий прямоугольник содержит пиксели с alpha == 0 (т. е. пиксели вокруг примитива). Эти пиксели будут перезаписывать пиксели другого изображения, эффективно очищая их, в то время как примитив перезаписывает только свою собственную область.
|
Пример режимов композиции Пример Режимов композиции, доступный в каталоге примеров Qt, позволяет экспериментировать с различными режимами композиции и немедленно видеть результаты. |
Ограничения
Если вы используете координаты с растровым движком рисования Qt, важно отметить, что, хотя координаты, большие чем +/- 215, могут быть использованы, никакое рисование, выполняемое с координатами за пределами этого диапазона, не гарантируется для отображения; рисование может быть обрезано. Это связано с использованием short int в реализации.
Контуры, созданные Qt’s строкером, являются лишь приближением при работе с кривыми формами. В большинстве случаев невозможно представить контур сегмента кривой Безье с помощью другого сегмента кривой Безье, и поэтому 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, Пример базового рисования и Функции утилит рисования.
Документация по типам членов
enum QPainter::CompositionMode
Определяет режимы, поддерживаемые для композиции цифровых изображений. Режимы композиции используются для указания того, как пиксели одного изображения (источника) объединяются с пикселями другого изображения (назначения).
Обратите внимание, что побитовые режимы растровой операции, обозначенные префиксом RasterOp, поддерживаются только в движках рисования X11 и растрового типа. Это означает, что единственный способ использовать эти режимы на Mac — через QImage. Режимы RasterOp, обозначенные режимами смешивания, не поддерживаются для перьев и кистей с альфа-компонентами. Кроме того, включение подсказки рендеринга QPainter::Antialiasing фактически отключит режимы RasterOp.
Наиболее распространённый тип — SourceOver (часто называемый просто альфа-смешиванием), где пиксель источника смешивается поверх пикселя назначения таким образом, что альфа-компонент источника определяет прозрачность пикселя.
Несколько режимов композиции требуют альфа-канала в исходных или целевых изображениях, чтобы иметь эффект. Для оптимальной производительности предпочтительным является формат изображения Format_ARGB32_Premultiplied.
Когда устанавливается режим композиции, он применяется ко всем операторам рисования, перьям, кистям, градиентам и рисованию растровых изображений/изображений.
| Константа | Значение | Описание |
|---|---|---|
QPainter::CompositionMode_SourceOver |
0 |
Это режим по умолчанию. Альфа-значение источника используется для смешивания пикселя поверх целевого. |
QPainter::CompositionMode_DestinationOver |
1 |
Альфа-значение назначения используется для смешивания его поверх пикселей источника. Этот режим является обратным CompositionMode_SourceOver. |
QPainter::CompositionMode_Clear |
2 |
Пиксели в назначении очищаются (устанавливаются в полностью прозрачные) независимо от источника. |
QPainter::CompositionMode_Source |
3 |
Результат — пиксель источника. (Это означает базовую операцию копирования и идентично SourceOver, когда пиксель источника непрозрачен). |
QPainter::CompositionMode_Destination |
4 |
Результат — пиксель назначения. Это означает, что смешивание не оказывает никакого эффекта. Этот режим является обратным CompositionMode_Source. |
QPainter::CompositionMode_SourceIn |
5 |
Результат — источник, где альфа уменьшается на альфа-значение назначения. |
QPainter::CompositionMode_DestinationIn |
6 |
Результат — назначение, где альфа уменьшается на альфа-значение источника. Этот режим является обратным CompositionMode_SourceIn. |
QPainter::CompositionMode_SourceOut |
7 |
Результат — источник, где альфа уменьшается на обратное значение альфа назначения. |
QPainter::CompositionMode_DestinationOut |
8 |
Результат — назначение, где альфа уменьшается на обратное значение альфа источника. Этот режим является обратным CompositionMode_SourceOut. |
QPainter::CompositionMode_SourceAtop |
9 |
Пиксель источника смешивается поверх назначения, при этом альфа-значение пикселя источника уменьшается на альфа-значение пикселя назначения. |
QPainter::CompositionMode_DestinationAtop |
10 |
Пиксель назначения смешивается поверх источника, при этом альфа-значение пикселя назначения уменьшается на альфа-значение пикселя назначения. Этот режим является обратным CompositionMode_SourceAtop. |
QPainter::CompositionMode_Xor |
11 |
Источник, альфа которого уменьшается с обратным значением альфа назначения, объединяется с назначением, альфа которого уменьшается на обратное значение альфа источника. CompositionMode_Xor не то же самое, что побитовое Xor. |
QPainter::CompositionMode_Plus |
12 |
Альфа и цвет пикселей источника и назначения складываются вместе. |
QPainter::CompositionMode_Multiply |
13 |
Результат — цвет источника, умноженный на назначение. Умножение цвета на белый цвет оставляет цвет неизменным, в то время как умножение цвета на черный цвет даёт черный цвет. |
QPainter::CompositionMode_Screen |
14 |
Цвета источника и назначения инвертируются, а затем умножаются. Трафаретная печать цвета с белым цветом даёт белый цвет, тогда как трафаретная печать цвета с чёрным цветом оставляет цвет неизменным. |
QPainter::CompositionMode_Overlay |
15 |
Умножает или трафаретно печатает цвета в зависимости от цвета назначения. Цвет назначения смешивается с цветом источника, чтобы отразить светлоту или темноту назначения. |
QPainter::CompositionMode_Darken |
16 |
Выбирается более тёмный из цветов источника и назначения. |
QPainter::CompositionMode_Lighten |
17 |
Выбирается более светлый из цветов источника и назначения. |
QPainter::CompositionMode_ColorDodge |
18 |
Цвет назначения осветляется, чтобы отразить цвет источника. Чёрный цвет источника оставляет цвет назначения неизменным. |
QPainter::CompositionMode_ColorBurn |
19 |
Цвет назначения затемняется, чтобы отразить цвет источника. Белый цвет источника оставляет цвет назначения неизменным. |
QPainter::CompositionMode_HardLight |
20 |
Умножает или трафаретно печатает цвета в зависимости от цвета источника. Светлый цвет источника осветлит цвет назначения, тогда как тёмный цвет источника затемнит цвет назначения. |
QPainter::CompositionMode_SoftLight |
21 |
Затемняет или осветляет цвета в зависимости от цвета источника. Аналогично CompositionMode_HardLight. |
QPainter::CompositionMode_Difference |
22 |
Вычитает более тёмный из цветов из более светлого. Рисование белым цветом инвертирует цвет назначения, тогда как рисование чёрным цветом оставляет цвет назначения неизменным. |
QPainter::CompositionMode_Exclusion |
23 |
Аналогично CompositionMode_Difference, но с меньшим контрастом. Рисование белым цветом инвертирует цвет назначения, тогда как рисование чёрным цветом оставляет цвет назначения неизменным. |
QPainter::RasterOp_SourceOrDestination |
24 |
Выполняет побитовую операцию ИЛИ над пикселями источника и назначения (src OR dst). |
QPainter::RasterOp_SourceAndDestination |
25 |
Выполняет побитовую операцию И над пикселями источника и назначения (src AND dst). |
QPainter::RasterOp_SourceXorDestination |
26 |
Выполняет побитовую операцию XOR над пикселями источника и назначения (src XOR dst). |
QPainter::RasterOp_NotSourceAndNotDestination |
27 |
Выполняет побитовую операцию НЕ ИЛИ над пикселями источника и назначения ((NOT src) AND (NOT dst)). |
QPainter::RasterOp_NotSourceOrNotDestination |
28 |
Выполняет побитовую операцию НЕ И над пикселями источника и назначения ((NOT src) OR (NOT dst)). |
QPainter::RasterOp_NotSourceXorDestination |
29 |
Выполняет побитовую операцию, где пиксели источника инвертируются, а затем выполняется XOR с назначением ((NOT src) XOR dst). |
QPainter::RasterOp_NotSource |
30 |
Выполняет побитовую операцию, где пиксели источника инвертируются (NOT src). |
QPainter::RasterOp_NotSourceAndDestination |
31 |
Выполняет побитовую операцию, где источник инвертируется, а затем выполняется И с назначением ((NOT src) AND dst). |
QPainter::RasterOp_SourceAndNotDestination |
32 |
Выполняет побитовую операцию, где источник выполняет И с инвертированными пикселями назначения (src AND (NOT dst)). |
QPainter::RasterOp_NotSourceOrDestination |
33 |
Выполняет побитовую операцию, где источник инвертируется, а затем выполняется ИЛИ с назначением ((NOT src) OR dst). |
QPainter::RasterOp_ClearDestination |
35 |
Пиксели в назначении очищаются (устанавливаются в 0) независимо от источника. |
QPainter::RasterOp_SetDestination |
36 |
Пиксели в назначении устанавливаются (устанавливаются в 1) независимо от источника. |
QPainter::RasterOp_NotDestination |
37 |
Выполняет побитовую операцию, где пиксели назначения инвертируются (NOT dst). |
QPainter::RasterOp_SourceOrNotDestination |
34 |
Выполняет побитовую операцию, где источник выполняет ИЛИ с инвертированными пикселями назначения (src OR (NOT dst)). |
См. также compositionMode(), setCompositionMode(), Режимы композиции, и Пример композиции изображений.
enum QPainter::PixmapFragmentHintflags QPainter::PixmapFragmentHints
| Константа | Значение | Описание |
|---|---|---|
QPainter::OpaqueHint |
0x01 |
Указывает, что фрагменты растрового изображения, которые должны быть нарисованы, непрозрачны. Непрозрачные фрагменты потенциально быстрее рисуются. |
Это перечисление было введено или изменено в Qt 4.7.
Тип PixmapFragmentHints является псевдонимом для QFlags<PixmapFragmentHint>. Он хранит результат побитового ИЛИ значений PixmapFragmentHint.
См. также QPainter::drawPixmapFragments() и QPainter::PixmapFragment.
enum QPainter::RenderHintflags QPainter::RenderHints
RenderHints используются для задания флагов для QPainter, которые могут или не могут быть учтены любым движком.
| Постоянная | Значение | Описание |
|---|---|---|
QPainter::Antialiasing |
0x01 |
Указывает, что движок должен выполнять сглаживание краёв примитивов, если это возможно. |
QPainter::TextAntialiasing |
0x02 |
Указывает, что движок должен выполнять сглаживание текста, если это возможно. Чтобы принудительно отключить сглаживание текста, не используйте этот параметр. Вместо этого установите QFont::NoAntialias в стратегии стиля шрифта. |
QPainter::SmoothPixmapTransform |
0x04 |
Указывает, что движок должен использовать алгоритм плавной трансформации пикселей (например, билинейный) вместо алгоритма ближайшего соседа. |
QPainter::HighQualityAntialiasing |
0x08 |
Это значение устарело и будет проигнорировано. Используйте вместо него параметр сглаживания Antialiasing. |
QPainter::NonCosmeticDefaultPen |
0x10 |
Это значение устарело, по умолчанию QPen теперь не декоративный. |
QPainter::Qt4CompatiblePainting |
0x20 |
Параметр совместимости, указывающий движку использовать те же правила заполнения, основанные на X11, что и в Qt 4, где сглаживание рендеринга смещено на немного меньше половины пикселя. Также будет обрабатывать конструкторы по умолчанию для перьев как декоративные. Может быть полезным при переносе приложения Qt 4 в Qt 5. |
Тип RenderHints является псевдонимом для QFlags<RenderHint>. Он хранит результат побитового ИЛИ значений RenderHint.
См. также renderHints(), setRenderHint(), Качество рендеринга и Пример концентрических окружностей.
Документация по членам функций
QPainter::QPainter()
Создаёт объект отрисовки.
QPainter::QPainter(QPaintDevice *device)
Создаёт объект отрисовки, который сразу начинает отрисовку на устройстве рисования device.
Этот конструктор удобен для кратковременных объектов отрисовки, например, в QWidget::paintEvent() и должен использоваться только один раз. Конструктор вызывает begin() за вас, а деструктор QPainter автоматически вызывает end().
Вот пример с использованием begin() и end():
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p;
p.begin(this);
p.drawLine(...); // drawing code
p.end();
} Тот же пример с использованием этого конструктора:
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.drawLine(...); // drawing code
} Поскольку конструктор не может предоставить обратную связь при неудачном инициализации объекта отрисовки, вы должны использовать begin() и end() для отрисовки на внешних устройствах, например, принтерах.
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();
Эта функция была представлена в Qt 4.6.
См. также endNativePainting().
QRectF QPainter::boundingRect(const QRectF &rectangle, int flags, const QString &text)
Возвращает прямоугольник ограничивающей области текста, как он будет отображаться внутри заданного прямоугольника rectangle с указанными flags при использовании текущего шрифта; т.е. функция указывает, где функция drawText() будет отображать текст при тех же аргументах.
Если текст не помещается в заданный прямоугольник с использованием указанных flags, функция возвращает необходимый прямоугольник.
Аргумент flags является побитовым ИЛИ следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
Если установлено несколько флагов выравнивания по горизонтали или по вертикали, результат выравнивания не определён.
См. также drawText(), Qt::Alignment и Qt::TextFlag.
QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)
Это перегруженная функция.
Возвращает прямоугольник ограничивающей области текста, как он будет отображаться внутри заданного прямоугольника rectangle с указанными flags при использовании текущего шрифта.
QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
Это перегруженная функция.
Возвращает прямоугольник ограничивающей области заданного text, как он будет отображаться внутри прямоугольника, начинающегося в точке (x, y) с шириной w и высотой h.
QRectF QPainter::boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Это перегруженная функция.
Вместо задания флагов как побитового ИЛИ Qt::AlignmentFlag и Qt::TextFlag, эта перегруженная функция принимает аргумент option. Класс QTextOption описывает общие свойства форматированного текста.
См. также QTextOption.
const QBrush &QPainter::brush() const
Возвращает текущую кисть объекта отрисовки.
См. также QPainter::setBrush() и Настройки.
QPoint QPainter::brushOrigin() const
Возвращает текущий начальный сдвиг кисти.
См. также setBrushOrigin() и Настройки.
QRectF QPainter::clipBoundingRect() const
Возвращает ограничивающую прямоугольник текущей области обрезки, если она задана; в противном случае возвращает пустой прямоугольник. Обратите внимание, что область обрезки задается в логических координатах.
Ограничивающая прямоугольник не гарантируется, что будет минимальной.
Данная функция была введена в Qt 4.8.
См. также setClipRect(), setClipPath() и setClipRegion().
QPainterPath QPainter::clipPath() const
Возвращает текущую область обрезки в логических координатах.
Предупреждение: QPainter не хранит объединённую область обрезки явно, так как это обрабатывается базовым QPaintEngine, поэтому путь пересоздаётся по запросу и преобразуется в текущую логическую систему координат. Это потенциально ресурсоёмкая операция.
См. также setClipPath(), clipRegion() и setClipping().
QRegion QPainter::clipRegion() const
Возвращает текущую область обрезки. Обратите внимание, что область обрезки задается в логических координатах.
Предупреждение: QPainter не хранит объединённую область обрезки явно, так как это обрабатывается базовым QPaintEngine, поэтому путь пересоздаётся по запросу и преобразуется в текущую логическую систему координат. Это потенциально ресурсоёмкая операция.
См. также setClipRegion(), clipPath() и setClipping().
QTransform QPainter::combinedTransform() const
Возвращает матрицу преобразования, объединяющую текущие преобразования окна/области просмотра и мира.
См. также setWorldTransform(), setWindow() и setViewport().
CompositionMode QPainter::compositionMode() const
Возвращает текущий режим композиции.
См. также CompositionMode и setCompositionMode().
QPaintDevice *QPainter::device() const
Возвращает устройство рисования, на котором в данный момент выполняется рисование, или 0, если рисовальщик не активен.
См. также isActive().
const QTransform &QPainter::deviceTransform() const
Возвращает матрицу, преобразующую логические координаты в устройство координат платформозависимого устройства рисования.
Эта функция необходима только при использовании команд рисования платформы на платформозависимой ручке (Qt::HANDLE), и платформа не выполняет преобразования напрямую.
Перечисление QPaintEngine::PaintEngineFeature можно запросить, чтобы определить, выполняет ли платформа преобразования или нет.
См. также worldTransform() и QPaintEngine::hasFeature().
void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)
Рисует дугу, определяемую заданным rectangle, startAngle и spanAngle.
startAngle и spanAngle должны быть указаны в 1/16-й градусах, т.е. полный круг равен 5760 (16 * 360). Положительные значения для углов означают против часовой стрелки, а отрицательные значения — по часовой стрелке. Ноль градусов соответствует положению 3 часа.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); int startAngle = 30 * 16; int spanAngle = 120 * 16; QPainter painter(this); painter.drawArc(rectangle, startAngle, spanAngle); |
См. также drawPie(), drawChord() и Система координат.
void QPainter::drawArc(const QRect &rectangle, int startAngle, int spanAngle)
Это перегруженная функция.
Рисует дугу, определяемую заданным rectangle, startAngle и spanAngle.
void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)
Это перегруженная функция.
Рисует дугу, определяемую прямоугольником, начинающимся в (x, y) с заданной width и height, и заданными startAngle и spanAngle.
void QPainter::drawChord(const QRectF &rectangle, int startAngle, int spanAngle)
Рисует хорду, определяемую заданным rectangle, startAngle и spanAngle. Хорда закрашивается текущей кистью.
startAngle и spanAngle должны быть указаны в 1/16-й градусах, т.е. полный круг равен 5760 (16 * 360). Положительные значения для углов означают против часовой стрелки, а отрицательные значения — по часовой стрелке. Ноль градусов соответствует положению 3 часа.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); int startAngle = 30 * 16; int spanAngle = 120 * 16; QPainter painter(this); painter.drawChord(rect, startAngle, spanAngle); |
См. также drawArc(), drawPie() и Система координат.
void QPainter::drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
Это перегруженная функция.
Рисует хорду, определяемую прямоугольником, начинающимся в (x, y) с заданной width и height, и заданными startAngle и spanAngle.
void QPainter::drawChord(const QRect &rectangle, int startAngle, int spanAngle)
Это перегруженная функция.
Рисует хорду, определяемую заданным rectangle, startAngle и spanAngle.
void QPainter::drawConvexPolygon(const QPointF *points, int pointCount)
Рисует выпуклый многоугольник, определяемый первыми pointCount точками в массиве points, используя текущую линию.
static const QPointF points[4] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(80.0, 30.0),
QPointF(90.0, 70.0)
};
QPainter painter(this);
painter.drawConvexPolygon(points, 4); |
Первая точка неявно соединяется с последней точкой, а многоугольник заполняется текущей кистью. Если предоставленный многоугольник не выпуклый, т.е. содержит хотя бы один угол больше 180 градусов, результаты не определены.
На некоторых платформах (например, X11) функция drawConvexPolygon() может быть быстрее, чем функция drawPolygon().
См. также drawPolygon(), drawPolyline() и Система координат.
void QPainter::drawConvexPolygon(const QPolygonF &polygon)
Это перегруженная функция.
Рисует выпуклый многоугольник, определяемый polygon, используя текущую линию и кисть.
void QPainter::drawConvexPolygon(const QPoint *points, int pointCount)
Это перегруженная функция.
Рисует выпуклый многоугольник, определяемый первыми pointCount точками в массиве points, используя текущую линию.
void QPainter::drawConvexPolygon(const QPolygon &polygon)
Это перегруженная функция.
Рисует выпуклый многоугольник, определяемый polygon, используя текущую линию и кисть.
void QPainter::drawEllipse(const QRectF &rectangle)
Рисует эллипс, определяемый заданным rectangle.
Заполненный эллипс имеет размер rectangle.size(). Эллипс с обводкой имеет размер rectangle.size() плюс ширина линии.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); QPainter painter(this); painter.drawEllipse(rectangle); |
См. также drawPie() и Система координат.
void QPainter::drawEllipse(const QRect &rectangle)
Это перегруженная функция.
Рисует эллипс, определяемый заданным rectangle.
void QPainter::drawEllipse(int x, int y, int width, int height)
Это перегруженный метод.
Рисует эллипс, заданный прямоугольником, начинающимся в точке (x, y) с заданной шириной и высотой.
void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry)
Это перегруженный метод.
Рисует эллипс, расположенный в точке center с радиусами rx и ry.
Этот метод был введён в Qt 4.4.
void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)
Это перегруженный метод.
Рисует эллипс, расположенный в точке center с радиусами rx и ry.
Этот метод был введён в Qt 4.4.
void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
Рисует глифы, представленные glyphs, в позиции position. position задаёт край базовой линии строки глифов. Глифы будут взяты из шрифта, выбранного в glyphs, и с смещениями, заданными позициями в glyphs.
Этот метод был введён в Qt 4.8.
См. также QGlyphRun::setRawFont(), QGlyphRun::setPositions() и QGlyphRun::setGlyphIndexes().
void QPainter::drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
Рисует прямоугольную часть source заданного image в прямоугольник target на устройстве рисования.
Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.
Примечание: См. Рисование высокоразрешающих версий растровых изображений и картинок о том, как это сказывается на QImage::devicePixelRatio().
Если для отображения изображения необходимо изменить его, например, преобразовать из 32-битного в 8-битный, используйте flags, чтобы указать, как вы хотите это сделать.
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(":/images/myImage.png");
QPainter painter(this);
painter.drawImage(target, image, source); |
См. также drawPixmap() и QImage::devicePixelRatio().
void QPainter::drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
Это перегруженный метод.
Рисует прямоугольную часть source заданного image в прямоугольник target на устройстве рисования.
Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.
void QPainter::drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = 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 QVector<QLineF> &lines)
Это перегруженный метод.
Рисует набор линий, определённых списком lines, с использованием текущей кисти и заливки.
void QPainter::drawLines(const QPointF *pointPairs, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве pointPairs с использованием текущей кисти. Линии заданы парами точек, поэтому количество элементов в pointPairs должно быть не менее lineCount * 2.
void QPainter::drawLines(const QVector<QPointF> &pointPairs)
Это перегруженный метод.
Рисует линию для каждой пары точек в векторе pointPairs, используя текущую кисть.
Если в массиве нечётное число точек, последняя точка будет проигнорирована.
void QPainter::drawLines(const QLine *lines, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве lines, используя текущую кисть.
void QPainter::drawLines(const QVector<QLine> &lines)
Это перегруженный метод.
Рисует набор линий, определённых списком lines, используя текущую кисть и щётку.
void QPainter::drawLines(const QPoint *pointPairs, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве pointPairs, используя текущую кисть.
void QPainter::drawLines(const QVector<QPoint> &pointPairs)
Это перегруженный метод.
Рисует линию для каждой пары точек в векторе pointPairs, используя текущую кисть.
void QPainter::drawPath(const QPainterPath &path)
Рисует заданный путь path, используя текущую кисть для контура и текущую щётку для заливки.
QPainterPath path; path.moveTo(20, 80); path.lineTo(20, 30); path.cubicTo(80, 0, 50, 50, 80, 80); QPainter painter(this); painter.drawPath(path); |
См. также пример Painter Paths и пример Vector Deformation.
void QPainter::drawPicture(const QPointF &point, const QPicture &picture)
Воспроизводит заданную picture в заданной точке point.
Класс QPicture является устройством рисования, которое записывает и воспроизводит команды QPainter. Картинка сериализует команды рисования в устройство ввода/вывода в платформенно-независимом формате. Всё, что может быть нарисована на виджете или пиксельной карте, также может быть сохранено в картинке.
Эта функция делает ровно то же самое, что и QPicture::play() при вызове с point = QPoint(0, 0).
QPicture picture;
QPointF point(10.0, 20.0)
picture.load("drawing.pic");
QPainter painter(this);
painter.drawPicture(0, 0, picture); |
См. также QPicture::play().
void QPainter::drawPicture(int x, int y, const QPicture &picture)
Это перегруженный метод.
Рисует заданную picture в точке (x, y).
void QPainter::drawPicture(const QPoint &point, const QPicture &picture)
Это перегруженный метод.
Воспроизводит заданную picture в заданной точке point.
void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
Рисует сектор, определённый заданным прямоугольником rectangle, startAngle и spanAngle.
Сектор заполняется текущей щёткой.
Углы startAngle и spanAngle должны быть указаны в 1/16 градуса. Полный круг равен 5760 (16 * 360). Положительные значения углов означают против часовой стрелки, а отрицательные — по часовой стрелке. Ноль градусов — это положение 3 часа.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); int startAngle = 30 * 16; int spanAngle = 120 * 16; QPainter painter(this); painter.drawPie(rectangle, startAngle, spanAngle); |
См. также drawEllipse(), drawChord(), и Системы координат.
void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
Это перегруженный метод.
Рисует сектор, определённый прямоугольником, начинающимся в точке (x, y) с заданной width и height, и заданными startAngle и spanAngle.
void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle)
Это перегруженный метод.
Рисует сектор, определённый заданным прямоугольником rectangle, startAngle и spanAngle.
void QPainter::drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
Рисует прямоугольную область source заданной pixmap в заданную target в устройстве рисования.
Примечание: Пиксельная карта масштабируется для соответствия прямоугольнику, если размеры пиксельной карты и прямоугольника не совпадают.
Примечание: См. Рисование высококачественных версий пиксельных карт и изображений о том, как это влияет на QPixmap::devicePixelRatio().
QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QPixmap pixmap(":myPixmap.png");
QPainter(this);
painter.drawPixmap(target, pixmap, source); |
Если pixmap является QBitmap, она рисуется с битами, которые «установлены» с помощью цвета кисти. Если backgroundMode равен Qt::OpaqueMode, «неустановленные» биты рисуются цветом фоновой щётки; если backgroundMode равен Qt::TransparentMode, «неустановленные» биты прозрачны. Рисование растровых изображений с градиентами или текстурными цветами не поддерживается.
См. также drawImage() и QPixmap::devicePixelRatio().
void QPainter::drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)
Это перегруженный метод.
Рисует прямоугольную область source заданной pixmap в заданную target в устройстве рисования.
Примечание: Пиксельная карта масштабируется для соответствия прямоугольнику, если размеры пиксельной карты и прямоугольника не совпадают.
void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
Это перегруженный метод.
Рисует прямоугольную область с началом (sx, sy), шириной sw и высотой sh, из заданной pixmap в точку (x, y) с шириной w и высотой h. Если sw или sh равны нулю, используется ширина/высота пиксельной карты, которая корректируется смещением sx/sy.
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
Это перегруженный метод.
Рисует пиксельную карту в (x, y), копируя часть заданной pixmap в устройство рисования.
(x, y) указывает верхнюю левую точку в устройстве рисования, на которую должно быть нарисовано. (sx, sy) указывает верхнюю левую точку в pixmap, которая должна быть нарисована. По умолчанию (0, 0).
(sw, sh) указывает размер пиксельной карты, которая должна быть нарисована. По умолчанию (0, 0) (и отрицательные значения) означает до нижнего правого угла пиксельной карты.
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
Это перегруженный метод.
Рисует прямоугольную область source заданной pixmap с её началом в заданной точке point.
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)
Это перегруженный метод.
Рисует прямоугольную область source заданной pixmap с её началом в заданной точке point.
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданную pixmap с началом в заданной point.
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданную pixmap с началом в заданной point.
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданную pixmap в позиции (x, y).
void QPainter::drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
Это перегруженный метод.
Рисует заданную pixmap в заданный rectangle.
Примечание: pixmap масштабируется для соответствия rectangle, если размеры pixmap и rectangle не совпадают.
void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
Это перегруженный метод.
Рисует pixmap в прямоугольник с позицией (x, y) и заданной width и height.
void QPainter::drawPixmapFragments(const PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, PixmapFragmentHints hints = PixmapFragmentHints())
Этот метод используется для рисования pixmap или подпрямоугольника pixmap в нескольких позициях с различным масштабом, поворотом и непрозрачностью. fragments — массив из fragmentCount элементов, определяющих параметры рисования каждого фрагмента pixmap. Параметр hints может использоваться для передачи подсказок рисования.
Этот метод потенциально быстрее, чем несколько вызовов drawPixmap(), так как ядро может оптимизировать изменения состояния.
Этот метод был введен в Qt 4.7.
См. также QPainter::PixmapFragment и QPainter::PixmapFragmentHint.
void QPainter::drawPoint(const QPointF &position)
Рисует одиночную точку в заданной position, используя цвет текущей кисти.
См. также Система координат.
void QPainter::drawPoint(const QPoint &position)
Это перегруженный метод.
Рисует одиночную точку в заданной position, используя цвет текущей кисти.
void QPainter::drawPoint(int x, int y)
Это перегруженный метод.
Рисует одиночную точку в позиции (x, y).
void QPainter::drawPoints(const QPointF *points, int pointCount)
Рисует первые pointCount точек в массиве points, используя цвет текущей кисти.
См. также Система координат.
void QPainter::drawPoints(const QPolygonF &points)
Это перегруженный метод.
Рисует точки в векторе points.
void QPainter::drawPoints(const QPoint *points, int pointCount)
Это перегруженный метод.
Рисует первые pointCount точек в массиве points, используя цвет текущей кисти.
void QPainter::drawPoints(const QPolygon &points)
Это перегруженный метод.
Рисует точки в векторе points.
void QPainter::drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Рисует многоугольник, определяемый первыми pointCount точками в массиве points, используя текущую кисть и щетку.
static const QPointF points[4] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(80.0, 30.0),
QPointF(90.0, 70.0)
};
QPainter painter(this);
painter.drawPolygon(points, 4); |
Первая точка неявно соединяется с последней точкой, и многоугольник заполняется текущей щеткой().
Если fillRule — Qt::WindingFill, многоугольник заполняется с использованием алгоритма заполнения по обходу. Если fillRule — Qt::OddEvenFill, многоугольник заполняется с использованием алгоритма заполнения нечётное-чётное. См. Qt::FillRule для более подробного описания этих правил заполнения.
См. также drawConvexPolygon(), drawPolyline(), и Система координат.
void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Рисует многоугольник, определяемый заданными points, используя правило заполнения fillRule.
void QPainter::drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Рисует многоугольник, определяемый первыми pointCount точками в массиве points.
void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Это перегруженный метод.
Рисует многоугольник, определяемый заданными points, используя правило заполнения fillRule.
void QPainter::drawPolyline(const QPointF *points, int pointCount)
Рисует ломаную линию, определяемую первыми pointCount точками в points, используя текущую кисть.
Обратите внимание, что в отличие от функции drawPolygon() последняя точка не соединяется с первой, и ломаная линия не закрашивается.
static const QPointF points[3] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(80.0, 30.0),
};
QPainter painter(this);
painter.drawPolyline(points, 3); |
См. также drawLines(), drawPolygon(), и Система координат.
void QPainter::drawPolyline(const QPolygonF &points)
Это перегруженный метод.
Рисует ломаную линию, определяемую заданными points, используя текущую кисть.
void QPainter::drawPolyline(const QPoint *points, int pointCount)
Это перегруженный метод.
Рисует ломаную линию, определяемую первыми pointCount точками в points, используя текущую кисть.
void QPainter::drawPolyline(const QPolygon &points)
Это перегруженный метод.
Рисует ломаную линию, определяемую заданными points, используя текущую кисть.
void QPainter::drawRect(const QRectF &rectangle)
Рисует текущий rectangle с текущей кистью и щеткой.
Заполненный прямоугольник имеет размер rectangle.size(). Рисованный прямоугольник имеет размер rectangle.size() плюс ширина кисти.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); QPainter painter(this); painter.drawRect(rectangle); |
См. также drawRects(), drawPolygon(), и Система координат.
void QPainter::drawRect(int x, int y, int width, int height)
Это перегруженный метод.
Рисует прямоугольник с верхним левым углом в (x, y) и заданной width и height.
void QPainter::drawRect(const QRect &rectangle)
Это перегруженный метод.
Рисует текущий rectangle с текущей кистью и щеткой.
void QPainter::drawRects(const QRectF *rectangles, int rectCount)
Рисует первые rectCount из заданных прямоугольников rectangles с использованием текущей кисти и пера.
См. также drawRect().
void QPainter::drawRects(const QVector<QRectF> &rectangles)
Это перегруженный метод.
Рисует заданные прямоугольники rectangles с использованием текущей кисти и пера.
void QPainter::drawRects(const QRect *rectangles, int rectCount)
Это перегруженный метод.
Рисует первые rectCount из заданных прямоугольников rectangles с использованием текущей кисти и пера.
void QPainter::drawRects(const QVector<QRect> &rectangles)
Это перегруженный метод.
Рисует заданные прямоугольники rectangles с использованием текущей кисти и пера.
void QPainter::drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Рисует заданный прямоугольник rect с закругленными углами.
Аргументы xRadius и yRadius задают радиусы эллипсов, определяющих углы закругленного прямоугольника. Если mode равен Qt::RelativeSize, то xRadius и yRadius задаются в процентах от половины ширины и высоты прямоугольника соответственно, и должны находиться в диапазоне от 0.0 до 100.0.
Размер заполненного прямоугольника равен rect.size(). Размер прямоугольника с обводкой равен rect.size() плюс ширина пера.
QRectF rectangle(10.0, 20.0, 80.0, 60.0); QPainter painter(this); painter.drawRoundedRect(rectangle, 20.0, 15.0); |
Эта функция была добавлена в Qt 4.4.
void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Это перегруженный метод.
Рисует заданный прямоугольник x, y, w, h с закругленными углами.
Эта функция была добавлена в Qt 4.4.
void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Это перегруженный метод.
Рисует заданный прямоугольник rect с закругленными углами.
Эта функция была добавлена в Qt 4.4.
void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
Рисует заданный текст staticText в заданной точке topLeftPosition.
Текст будет нарисован с использованием шрифта и преобразования, установленных в рисовальщике. Если шрифт и/или преобразование, установленные в рисовальщике, отличаются от тех, которые использовались для инициализации макета QStaticText, то макет нужно пересчитать. Используйте QStaticText::prepare() для инициализации staticText шрифтом и преобразованием, с которыми он будет позже нарисован.
Если topLeftPosition не совпадает с тем, что было при инициализации staticText или при последнем рисовании, то при перемещении текста в новую позицию будет небольшая накладная стоимость.
Примечание: Если преобразование рисовальщика не аффинное, то staticText будет нарисован с помощью обычных вызовов drawText(), теряя любые потенциальные преимущества производительности.
Примечание: Позиция по оси Y используется как верхняя точка шрифта.
Эта функция была добавлена в Qt 4.7.
См. также QStaticText.
void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
Это перегруженный метод.
Рисует staticText в точке topLeftPosition.
Примечание: Позиция по оси Y используется как верхняя точка шрифта.
Эта функция была добавлена в Qt 4.7.
void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)
Это перегруженный метод.
Рисует staticText в координатах left и top.
Примечание: Позиция по оси Y используется как верхняя точка шрифта.
Эта функция была добавлена в Qt 4.7.
void QPainter::drawText(const 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 QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = Q_NULLPTR)
Это перегруженный метод.
Рисует заданный текст text внутри указанного прямоугольника rectangle. Прямоугольник rectangle и флаги выравнивания flags определяют якоря для текста text.
QPainter painter(this);
painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject")); |
Прямоугольник boundingRect (если не равен нулю) устанавливается в значение, которое необходимо, чтобы охватить весь текст. Например, на следующем рисунке пунктирная линия представляет 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 QRect &rectangle, int flags, const QString &text, QRect *boundingRect = Q_NULLPTR)
Это перегруженный метод.
Рисует заданный текст внутри заданного прямоугольника в соответствии с указанными флагами.
BoundingRect (если не null) устанавливается в значение, которое должен иметь прямоугольник, чтобы охватить весь текст. Например, на рисунке ниже пунктирная линия представляет boundingRect, вычисленный функцией, а штриховая линия представляет прямоугольник:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
По умолчанию, QPainter рисует текст с антиалиасингом.
Примечание: Координата y прямоугольника используется как верхняя часть шрифта.
См. также setFont() и setPen().
void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = Q_NULLPTR)
Это перегруженный метод.
Рисует заданный текст внутри прямоугольника с началом в (x, y), шириной width и высотой height.
boundingRect (если не null) устанавливается в значение, которое должен иметь прямоугольник, чтобы охватить весь текст. Например, на рисунке ниже пунктирная линия представляет boundingRect, вычисленный функцией, а штриховая линия представляет прямоугольник, определенный x, y, width и height:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Аргумент flags представляет собой побитовое ИЛИ следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
По умолчанию, QPainter рисует текст с антиалиасингом.
Примечание: Значение y используется как верхняя часть шрифта.
См. также Qt::AlignmentFlag, Qt::TextFlag, setFont() и setPen().
void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Это перегруженный метод.
Рисует заданный текст в прямоугольнике, используя option для управления его позиционированием и ориентацией.
По умолчанию, QPainter рисует текст с антиалиасингом.
Примечание: Координата y прямоугольника используется как верхняя часть шрифта.
См. также setFont() и setPen().
void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
Рисует pixmap, повторяя её внутри заданного прямоугольника с началом в заданной position.
Вызов drawTiledPixmap() похож на вызов drawPixmap() несколько раз, чтобы заполнить (отзеркалить) область pixmap, но потенциально намного эффективнее в зависимости от используемой операционной системы.
См. также drawPixmap().
void QPainter::drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
Это перегруженный метод.
Рисует pixmap с повторением внутри указанного прямоугольника.
(x, y) определяет верхнюю левую точку в устройстве рисования, на которое будет нарисовано изображение; со заданной шириной и высотой. (sx, sy) определяет верхнюю левую точку в pixmap, которая должна быть нарисована; по умолчанию это (0, 0).
void QPainter::drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = QPoint())
Это перегруженный метод.
Рисует pixmap, повторяя её внутри заданного прямоугольника с началом в заданной position.
bool QPainter::end()
Завершает рисование. Любые ресурсы, используемые во время рисования, освобождаются. Обычно нет необходимости вызывать эту функцию, так как она вызывается деструктором.
Возвращает true если рисовальщик больше не активен; в противном случае возвращает false.
См. также begin() и isActive().
void QPainter::endNativePainting()
Восстанавливает состояние рисовальщика после ручного выполнения команд рисования в родном формате. Позволяет рисовальщику восстановить любое родное состояние, на котором он полагается, перед вызовом других команд рисовальщика.
Эта функция была добавлена в Qt 4.6.
См. также beginNativePainting().
void QPainter::eraseRect(const QRectF &rectangle)
Очищает область внутри заданного прямоугольника. Эквивалентно вызову
fillRect(rectangle, background()).
См. также fillRect().
void QPainter::eraseRect(int x, int y, int width, int height)
Это перегруженный метод.
Очищает область внутри прямоугольника, начинающегося в (x, y) с заданной шириной и высотой.
void QPainter::eraseRect(const QRect &rectangle)
Это перегруженный метод.
Очищает область внутри заданного прямоугольника.
void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)
Заполняет заданный путь заданной кистью. Обводка не рисуется.
В качестве альтернативы можно указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть с твёрдым цветом.
См. также drawPath().
void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)
Заполняет заданный прямоугольник указанной кистью.
В качестве альтернативы можно указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть с твёрдым цветом.
См. также drawRect().
void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в (x, y), с заданной шириной и высотой, используя заданную кисть.
void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)
Это перегруженный метод.
Заполняет заданный прямоугольник указанной кистью.
void QPainter::fillRect(const QRectF &rectangle, const QColor &color)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным цветом.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в (x, y), с заданной шириной и высотой, используя заданный цвет.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(const QRect &rectangle, const QColor &color)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным цветом.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y), заданной шириной и высотой, заданным цветом color.
Этот метод был представлен в Qt 4.5.
void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным цветом color.
Этот метод был представлен в Qt 4.5.
void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным цветом color.
Этот метод был представлен в Qt 4.5.
void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся в точке (x, y), заданной шириной и высотой, используя заданный стиль заливки style.
Этот метод был представлен в Qt 4.5.
void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle заданным стилем заливки style.
Этот метод был представлен в Qt 4.5.
void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle style)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle заданным стилем заливки style.
Этот метод был представлен в Qt 4.5.
const QFont &QPainter::font() const
Возвращает текущий шрифт, используемый для отрисовки текста.
См. также setFont(), drawText() и Настройки.
QFontInfo QPainter::fontInfo() const
Возвращает информацию о шрифте для отрисовщика, если отрисовщик активен. В противном случае возвращаемое значение неопределено.
См. также font(), isActive() и Настройки.
QFontMetrics QPainter::fontMetrics() const
Возвращает метрики шрифта для отрисовщика, если отрисовщик активен. В противном случае возвращаемое значение неопределено.
См. также font(), isActive() и Настройки.
bool QPainter::hasClipping() const
Возвращает true если обрезка установлена; в противном случае возвращает false.
См. также setClipping() и Обрезка.
bool QPainter::isActive() const
Возвращает true если был вызван begin() и ещё не был вызван end(); в противном случае возвращает false.
См. также begin() и QPaintDevice::paintingActive().
Qt::LayoutDirection QPainter::layoutDirection() const
Возвращает направление выравнивания, используемое отрисовщиком при отрисовке текста.
См. также QTextOption::textDirection(), setLayoutDirection(), drawText() и Настройки.
qreal QPainter::opacity() const
Возвращает непрозрачность отрисовщика. Значение по умолчанию — 1.
Этот метод был представлен в Qt 4.2.
См. также setOpacity().
QPaintEngine *QPainter::paintEngine() const
Возвращает движок отрисовки, на котором в настоящее время работает отрисовщик, если отрисовщик активен; в противном случае 0.
См. также isActive().
const QPen &QPainter::pen() const
Возвращает текущую ручку отрисовщика.
См. также setPen() и Настройки.
RenderHints QPainter::renderHints() const
Возвращает флаг, определяющий настройки рендеринга, установленные для этого отрисовщика.
См. также setRenderHints(), testRenderHint() и Качество рендеринга.
void QPainter::resetTransform()
Сбрасывает все преобразования, выполненные с помощью translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() и setWindow().
См. также Преобразования координат.
void QPainter::restore()
Восстанавливает текущее состояние отрисовщика (извлекает сохранённое состояние из стека).
См. также save().
void QPainter::rotate(qreal angle)
Поворачивает систему координат по часовой стрелке. Переданный параметр angle выражен в градусах.
См. также setWorldTransform() и Преобразования координат.
void QPainter::save()
Сохраняет текущее состояние отрисовщика (помещает состояние в стек). Функция save() должна быть дополнена соответствующей функцией restore(); функция end() обрабатывает стек.
См. также restore().
void QPainter::scale(qreal sx, qreal sy)
Масштабирует систему координат на (sx, sy).
См. также setWorldTransform() и Преобразования координат.
void QPainter::setBackground(const QBrush &brush)
Устанавливает кисть фона отрисовщика на заданную brush.
Кисть фона — это кисть, используемая для заполнения при отрисовке непрозрачного текста, штрихованных линий и растровых изображений. Кисть фона не влияет в режиме прозрачного фона (по умолчанию).
См. также background(), setBackgroundMode() и Настройки.
void QPainter::setBackgroundMode(Qt::BGMode mode)
Устанавливает режим фона отрисовщика на заданный mode.
Qt::TransparentMode (по умолчанию) рисует штрихованные линии и текст без установки пикселей фона. Qt::OpaqueMode заполняет эти области текущим цветом фона.
Обратите внимание, что для прозрачной отрисовки растровых изображений или пиксельных карт необходимо использовать QPixmap::setMask().
См. также backgroundMode(), setBackground() и Настройки.
void QPainter::setBrush(const QBrush &brush)
Устанавливает кисть отрисовщика на заданную 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() и Параметры.
void QPainter::setBrushOrigin(const QPoint &position)
Это перегруженный метод.
Устанавливает начало кисти в заданную position.
void QPainter::setBrushOrigin(int x, int y)
Это перегруженный метод.
Устанавливает начало кисти в точку (x, y).
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(CompositionMode mode)
Устанавливает режим композиции до заданного mode.
Предупреждение: Только QPainter, работающий с QImage, полностью поддерживает все режимы композиции. Режимы RasterOp поддерживаются для X11, как описано в compositionMode().
См. также compositionMode().
void QPainter::setFont(const QFont &font)
Устанавливает шрифт рисовальщика до заданного font.
Этот шрифт используется последующими функциями drawText(). Цвет текста совпадает с цветом пера.
Если заданный шрифт недоступен, Qt находит ближайший подходящий. font() вернёт то, что было установлено с помощью setFont(), а fontInfo() вернёт фактически используемый шрифт (который может быть таким же).
См. также font(), drawText() и Параметры.
void QPainter::setLayoutDirection(Qt::LayoutDirection direction)
Устанавливает направление выравнивания, используемое рисовальщиком при отрисовке текста, до заданного direction.
По умолчанию используется Qt::LayoutDirectionAuto, которое неявно определяет направление из нарисованного текста.
См. также QTextOption::setTextDirection(), layoutDirection(), drawText() и Параметры.
void QPainter::setOpacity(qreal opacity)
Устанавливает непрозрачность рисовальщика до opacity. Значение должно быть в диапазоне от 0.0 до 1.0, где 0.0 — полностью прозрачный, а 1.0 — полностью непрозрачный.
Непрозрачность, установленная для рисовальщика, применяется к каждой операции рисования индивидуально.
Эта функция была представлена в Qt 4.2.
См. также opacity().
void QPainter::setPen(const QPen &pen)
Устанавливает перо рисовальщика до заданного pen.
pen определяет, как рисовать линии и контуры, а также цвет текста.
void QPainter::setPen(const QColor &color)
Это перегруженный метод.
Устанавливает перо рисовальщика со стилем Qt::SolidLine, шириной 1 и заданным цветом color.
void QPainter::setPen(Qt::PenStyle style)
Это перегруженный метод.
Устанавливает перо рисовальщика с заданным стилем style, шириной 1 и чёрным цветом.
void QPainter::setRenderHint(RenderHint hint, bool on = true)
Устанавливает заданный параметр рендеринга hint для рисовальщика, если on равно true; в противном случае очищает параметр.
См. также setRenderHints(), renderHints() и Качество рендеринга.
void QPainter::setRenderHints(RenderHints hints, bool on = true)
Устанавливает заданные параметры рендеринга hints для рисовальщика, если on равно true; в противном случае очищает параметры.
Эта функция была представлена в Qt 4.2.
См. также setRenderHint(), renderHints() и Качество рендеринга.
void QPainter::setTransform(const QTransform &transform, bool combine = false)
Устанавливает матрицу преобразования мира. Если combine равно true, заданное transform комбинируется с текущей матрицей; в противном случае — заменяет текущую матрицу.
Эта функция была представлена в Qt 4.3.
См. также transform() и setWorldTransform().
void QPainter::setViewTransformEnabled(bool enable)
Включает преобразования вида, если enable равно true, или отключает их, если enable равно false.
См. также viewTransformEnabled() и Преобразование окна-вида.
void QPainter::setViewport(const QRect &rectangle)
Устанавливает прямоугольник видового порта рисовальщика до заданного 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) и имеющий заданную ширину и высоту.
void QPainter::setWorldMatrixEnabled(bool enable)
Включает преобразования, если enable равно true, или отключает преобразования, если enable равно false. Матрица мирового преобразования не изменяется.
Этот метод был введен в Qt 4.2.
См. также worldMatrixEnabled(), worldTransform(), и Преобразования координат.
void QPainter::setWorldTransform(const QTransform &matrix, bool combine = false)
Устанавливает матрицу мирового преобразования. Если combine равно true, указанная matrix комбинируется с текущей матрицей; в противном случае она заменяет текущую матрицу.
См. также worldTransform(), transform(), и setTransform().
void QPainter::shear(qreal sh, qreal sv)
Деформирует систему координат на (sh, sv).
См. также setWorldTransform() и Преобразования координат.
void QPainter::strokePath(const QPainterPath &path, const QPen &pen)
Рисует контур (обводку) пути path с помощью пера, заданного pen
См. также fillPath() и Рисование.
bool QPainter::testRenderHint(RenderHint hint) const
Возвращает true если hint установлен; в противном случае возвращает false.
Этот метод был введен в Qt 4.3.
См. также renderHints() и setRenderHint().
const QTransform &QPainter::transform() const
Возвращает матрицу мирового преобразования.
См. также setTransform() и worldTransform().
void QPainter::translate(const QPointF &offset)
Переводит систему координат на заданное смещение offset; т.е. заданное offset добавляется к точкам.
См. также setWorldTransform() и Преобразования координат.
void QPainter::translate(const QPoint &offset)
Это перегруженный метод.
Переводит систему координат на заданное смещение offset.
void QPainter::translate(qreal dx, qreal dy)
Это перегруженный метод.
Переводит систему координат на вектор (dx, dy).
bool QPainter::viewTransformEnabled() const
Возвращает true если преобразование просмотра включено; в противном случае возвращает false.
См. также setViewTransformEnabled() и worldTransform().
QRect QPainter::viewport() const
Возвращает прямоугольник viewport.
См. также setViewport() и setViewTransformEnabled().
QRect QPainter::window() const
Возвращает прямоугольник окна.
См. также setWindow() и setViewTransformEnabled().
bool QPainter::worldMatrixEnabled() const
Возвращает true если мировое преобразование включено; в противном случае возвращает false.
Этот метод был введен в Qt 4.2.
См. также setWorldMatrixEnabled(), worldTransform(), и Система координат.
const QTransform &QPainter::worldTransform() const
Возвращает матрицу мирового преобразования.
См. также setWorldTransform().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qpainter.html