Класс QPainter
Класс QPainter выполняет низкоуровневую отрисовку на виджетах и других устройствах рисования. Подробнее...
| Заголовок: | #include <QPainter> |
| qmake: | QT += gui |
Примечание: Все функции этого класса являются реентерабельными.
Открытые типы
| класс | PixmapFragment |
| перечисление | РежимКомпозиции { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, ..., RasterOp_SourceOrNotDestination } |
| перечисление | ПодсказкаPixmapFragment { OpaqueHint } |
| флаги | ПодсказкиPixmapFragment |
| перечисление | ПараметрОтрисовки { 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 |
| QPainter::CompositionMode | compositionMode() const |
| QPaintDevice * | device() const |
| const QTransform & | deviceTransform() const |
| void | drawArc(const QRectF &rectangle, int startAngle, int spanAngle) |
| void | drawArc(const QRect &rectangle, int startAngle, int spanAngle) |
| void | drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) |
| void | drawChord(const QRectF &rectangle, int startAngle, int spanAngle) |
| void | drawChord(int x, int y, int width, int height, int startAngle, int spanAngle) |
| void | drawChord(const QRect &rectangle, int startAngle, int spanAngle) |
| void | drawConvexPolygon(const QPointF *points, int pointCount) |
| void | drawConvexPolygon(const QPolygonF &polygon) |
| void | drawConvexPolygon(const QPoint *points, int pointCount) |
| void | drawConvexPolygon(const QPolygon &polygon) |
| void | drawEllipse(const QRectF &rectangle) |
| void | drawEllipse(const QRect &rectangle) |
| void | drawEllipse(int x, int y, int width, int height) |
| void | drawEllipse(const QPointF ¢er, qreal rx, qreal ry) |
| void | drawEllipse(const QPoint ¢er, int rx, int ry) |
| void | drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs) |
| void | drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| void | drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| void | drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = ...) |
| void | drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = ...) |
| void | drawImage(const QRectF &rectangle, const QImage &image) |
| void | drawImage(const QRect &rectangle, const QImage &image) |
| void | drawImage(const QPointF &point, const QImage &image) |
| void | drawImage(const QPoint &point, const QImage &image) |
| void | drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| void | drawLine(const QLineF &line) |
| void | drawLine(const QLine &line) |
| void | drawLine(int x1, int y1, int x2, int y2) |
| void | drawLine(const QPoint &p1, const QPoint &p2) |
| void | drawLine(const QPointF &p1, const QPointF &p2) |
| void | drawLines(const QLineF *lines, int lineCount) |
| void | drawLines(const QVector<QLineF> &lines) |
| void | drawLines(const QPointF *pointPairs, int lineCount) |
| void | drawLines(const QVector<QPointF> &pointPairs) |
| void | drawLines(const QLine *lines, int lineCount) |
| void | drawLines(const QVector<QLine> &lines) |
| void | drawLines(const QPoint *pointPairs, int lineCount) |
| void | drawLines(const QVector<QPoint> &pointPairs) |
| void | drawPath(const QPainterPath &path) |
| void | drawPicture(const QPointF &point, const QPicture &picture) |
| void | drawPicture(int x, int y, const QPicture &picture) |
| void | drawPicture(const QPoint &point, const QPicture &picture) |
| void | drawPie(const QRectF &rectangle, int startAngle, int spanAngle) |
| void | drawPie(int x, int y, int width, int height, int startAngle, int spanAngle) |
| void | drawPie(const QRect &rectangle, int startAngle, int spanAngle) |
| void | drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source) |
| void | drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source) |
| void | drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh) |
| void | drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh) |
| void | drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source) |
| void | drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source) |
| void | drawPixmap(const QPointF &point, const QPixmap &pixmap) |
| void | drawPixmap(const QPoint &point, const QPixmap &pixmap) |
| void | drawPixmap(int x, int y, const QPixmap &pixmap) |
| void | drawPixmap(const QRect &rectangle, const QPixmap &pixmap) |
| void | drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap) |
| void | drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = ...) |
| void | drawPoint(const QPointF &position) |
| void | drawPoint(const QPoint &position) |
| void | drawPoint(int x, int y) |
| void | drawPoints(const QPointF *points, int pointCount) |
| void | drawPoints(const QPolygonF &points) |
| void | drawPoints(const QPoint *points, int pointCount) |
| void | drawPoints(const QPolygon &points) |
| void | drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill) |
| void | drawPolyline(const QPointF *points, int pointCount) |
| void | drawPolyline(const QPolygonF &points) |
| void | drawPolyline(const QPoint *points, int pointCount) |
| void | drawPolyline(const QPolygon &points) |
| void | drawRect(const QRectF &rectangle) |
| void | drawRect(int x, int y, int width, int height) |
| void | drawRect(const QRect &rectangle) |
| void | drawRects(const QRectF *rectangles, int rectCount) |
| void | drawRects(const QVector<QRectF> &rectangles) |
| void | drawRects(const QRect *rectangles, int rectCount) |
| void | drawRects(const QVector<QRect> &rectangles) |
| void | drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
| void | drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...) |
| void | drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...) |
| void | drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText) |
| void | drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText) |
| void | drawStaticText(int left, int top, const QStaticText &staticText) |
| void | drawText(const 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 = nullptr) |
| void | drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr) |
| void | drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr) |
| void | drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()) |
| void | drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF()) |
| void | drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0) |
| void | drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = ...) |
| bool | end() |
| void | endNativePainting() |
| void | eraseRect(const QRectF &rectangle) |
| void | eraseRect(int x, int y, int width, int height) |
| void | eraseRect(const QRect &rectangle) |
| void | fillPath(const QPainterPath &path, const QBrush &brush) |
| void | fillRect(const QRectF &rectangle, const QBrush &brush) |
| void | fillRect(int x, int y, int width, int height, const QBrush &brush) |
| void | fillRect(const QRect &rectangle, const QBrush &brush) |
| void | fillRect(const QRectF &rectangle, const QColor &color) |
| void | fillRect(int x, int y, int width, int height, const QColor &color) |
| void | fillRect(const QRect &rectangle, const QColor &color) |
| void | fillRect(int x, int y, int width, int height, Qt::GlobalColor color) |
| void | fillRect(const QRect &rectangle, Qt::GlobalColor color) |
| void | fillRect(const QRectF &rectangle, Qt::GlobalColor color) |
| void | fillRect(int x, int y, int width, int height, Qt::BrushStyle style) |
| void | fillRect(const QRect &rectangle, Qt::BrushStyle style) |
| void | fillRect(const QRectF &rectangle, Qt::BrushStyle style) |
| const QFont & | font() const |
| QFontInfo | fontInfo() const |
| QFontMetrics | fontMetrics() const |
| bool | hasClipping() const |
| bool | isActive() const |
| Qt::LayoutDirection | layoutDirection() const |
| qreal | opacity() const |
| QPaintEngine * | paintEngine() const |
| const QPen & | pen() const |
| QPainter::RenderHints | renderHints() const |
| void | resetTransform() |
| void | restore() |
| void | rotate(qreal angle) |
| void | save() |
| void | scale(qreal sx, qreal sy) |
| void | setBackground(const QBrush &brush) |
| void | setBackgroundMode(Qt::BGMode mode) |
| void | setBrush(const QBrush &brush) |
| void | setBrush(Qt::BrushStyle style) |
| void | setBrushOrigin(const QPointF &position) |
| void | setBrushOrigin(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(QPainter::CompositionMode mode) |
| void | setFont(const QFont &font) |
| void | setLayoutDirection(Qt::LayoutDirection direction) |
| void | setOpacity(qreal opacity) |
| void | setPen(const QPen &pen) |
| void | setPen(const QColor &color) |
| void | setPen(Qt::PenStyle style) |
| void | setRenderHint(QPainter::RenderHint hint, bool on = true) |
| void | setRenderHints(QPainter::RenderHints hints, bool on = true) |
| void | setTransform(const QTransform &transform, bool combine = false) |
| void | setViewTransformEnabled(bool enable) |
| void | setViewport(const QRect &rectangle) |
| void | setViewport(int x, int y, int width, int height) |
| void | setWindow(const QRect &rectangle) |
| void | setWindow(int x, int y, int width, int height) |
| void | setWorldMatrixEnabled(bool enable) |
| void | setWorldTransform(const QTransform &matrix, bool combine = false) |
| void | shear(qreal sh, qreal sv) |
| void | strokePath(const QPainterPath &path, const QPen &pen) |
| bool | testRenderHint(QPainter::RenderHint hint) const |
| const QTransform & | transform() const |
| void | translate(const QPointF &offset) |
| void | translate(const QPoint &offset) |
| void | translate(qreal dx, qreal dy) |
| bool | viewTransformEnabled() const |
| QRect | viewport() const |
| QRect | window() const |
| bool | worldMatrixEnabled() const |
| const QTransform & | worldTransform() const |
Подробное описание
Класс QPainter выполняет низкоуровневую отрисовку на виджетах и других устройствах отрисовки.
QPainter предоставляет высокооптимизированные функции для выполнения большинства операций отрисовки, необходимых графическим приложениям. Он может отрисовывать все, от простых линий до сложных фигур, таких как секторы и хорды. Также он может отрисовывать выровненный текст и пиксельмапы. Обычно он рисует в «естественной» системе координат, но также может выполнять преобразования вида и мира. 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'ов 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'овским инструментом для обводки, являются только приближением при работе с кривыми. В большинстве случаев невозможно представить контур сегмента кривой Безье с помощью другого сегмента кривой Безье, поэтому 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() будет рисовать, если ей будут переданы те же аргументы.
Если text не помещается внутри заданного rectangle, используя указанные flags, функция возвращает необходимую прямоугольную область.
Аргумент flags представляет собой побитовое ИЛИ следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
Если установлены несколько флагов выравнивания по горизонтали или по вертикали, результат выравнивания не определён.
См. также drawText(), Qt::Alignment и Qt::TextFlag.
QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)
Это перегруженная функция.
Возвращает ограничивающую прямоугольную область текста, как она будет отображаться внутри заданного 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().
QPainter::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 = ...)
Это перегруженный метод.
Рисует прямоугольную часть source заданного image с началом в заданной точке point.
void QPainter::drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = ...)
Это перегруженный метод.
Рисует прямоугольную часть source заданного image с началом в заданной точке point.
void QPainter::drawImage(const QRectF &rectangle, const QImage &image)
Это перегруженный метод.
Рисует заданное image в заданный rectangle.
Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.
void QPainter::drawImage(const QRect &rectangle, const QImage &image)
Это перегруженный метод.
Рисует заданное image в заданный rectangle.
Примечание: Изображение масштабируется для соответствия прямоугольнику, если размеры изображения и прямоугольника не совпадают.
void QPainter::drawImage(const QPointF &point, const QImage &image)
Это перегруженный метод.
Рисует заданное image в заданной точке point.
void QPainter::drawImage(const QPoint &point, const QImage &image)
Это перегруженный метод.
Рисует заданное image в заданной точке point.
void QPainter::drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor)
Это перегруженный метод.
Рисует изображение в точке (x, y), копируя часть image в устройство рисования.
(x, y) задаёт верхнюю левую точку в устройстве рисования, на которую нужно нарисовать. (sx, sy) задаёт верхнюю левую точку в image, которую нужно нарисовать. По умолчанию (0, 0).
(sw, sh) задаёт размер изображения, которое нужно нарисовать. По умолчанию (0, 0) (и отрицательные значения) означают до правого нижнего угла изображения.
void QPainter::drawLine(const QLineF &line)
Рисует линию, определённую line.
QLineF line(10.0, 80.0, 90.0, 20.0); QPainter(this); painter.drawLine(line); |
См. также drawLines(), drawPolyline() и Система координат.
void QPainter::drawLine(const QLine &line)
Это перегруженный метод.
Рисует линию, определённую line.
void QPainter::drawLine(int x1, int y1, int x2, int y2)
Это перегруженный метод.
Рисует линию от (x1, y1) до (x2, y2).
void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
Это перегруженный метод.
Рисует линию от p1 до p2.
void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
Это перегруженный метод.
Рисует линию от p1 до p2.
void QPainter::drawLines(const QLineF *lines, int lineCount)
Рисует первые lineCount линий в массиве lines с использованием текущей кисти.
См. также drawLine() и drawPolyline().
void QPainter::drawLines(const QVector<QLineF> &lines)
Это перегруженный метод.
Рисует набор линий, определённых списком lines, используя текущую кисть и штриховку.
void QPainter::drawLines(const QPointF *pointPairs, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве pointPairs с использованием текущей кисти. Линии задаются парами точек, поэтому количество элементов в pointPairs должно быть по крайней мере lineCount * 2.
void QPainter::drawLines(const QVector<QPointF> &pointPairs)
Это перегруженный метод.
Рисует линию для каждой пары точек в векторе pointPairs с использованием текущей кисти. Если в массиве нечётное количество точек, последняя точка игнорируется.
void QPainter::drawLines(const QLine *lines, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве lines с использованием текущей кисти.
void QPainter::drawLines(const QVector<QLine> &lines)
Это перегруженный метод.
Рисует набор линий, определённых списком lines, с использованием текущей кисти и заливки.
void QPainter::drawLines(const QPoint *pointPairs, int lineCount)
Это перегруженный метод.
Рисует первые lineCount линий в массиве pointPairs с использованием текущей кисти.
void QPainter::drawLines(const QVector<QPoint> &pointPairs)
Это перегруженный метод.
Рисует линию для каждой пары точек в векторе pointPairs с использованием текущей кисти.
void QPainter::drawPath(const QPainterPath &path)
Рисует заданный путь рисования path с использованием текущей кисти для контура и текущей заливки для заполнения.
QPainterPath path; path.moveTo(20, 80); path.lineTo(20, 30); path.cubicTo(80, 0, 50, 50, 80, 80); QPainter painter(this); painter.drawPath(path); |
См. также пример Painter Paths и пример деформации векторов.
void QPainter::drawPicture(const QPointF &point, const QPicture &picture)
Воспроизводит заданную picture в заданной точке point.
Класс QPicture — это устройство рисования, которое записывает и воспроизводит команды QPainter. Картинка сериализует команды рисования в устройство ввода-вывода в платформенно-независимом формате. Всё, что можно нарисовать на виджете или пиксельной карте, также может быть сохранено в картинке.
Эта функция делает точно то же самое, что и QPicture::play() при вызове с point = QPoint(0, 0).
QPicture picture;
QPointF point(10.0, 20.0)
picture.load("drawing.pic");
QPainter painter(this);
painter.drawPicture(0, 0, picture); |
См. также QPicture::play().
void QPainter::drawPicture(int x, int y, const QPicture &picture)
Это перегруженный метод.
Рисует заданную picture в точке (x, y).
void QPainter::drawPicture(const QPoint &point, const QPicture &picture)
Это перегруженный метод.
Воспроизводит заданную picture в заданной точке point.
void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
Рисует сектор, определяемый заданным прямоугольником rectangle, startAngle и spanAngle.
Сектор заполняется текущей заливкой.
Угол начала и угол обзора должны быть указаны в 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 будет масштабирована для соответствия.
void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
Это перегруженный метод.
Рисует pixmap в прямоугольник с координатами (x, y), заданной width и height.
void QPainter::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = ...)
Этот метод используется для рисования 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)
Это перегруженный метод.
Рисует заданные прямоугольники с помощью текущего пера и кисти.
void QPainter::drawRects(const QRect *rectangles, int rectCount)
Это перегруженный метод.
Рисует первые rectCount заданных rectangles с использованием текущего пера и кисти.
void QPainter::drawRects(const QVector<QRect> &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 = ...)
Это перегруженный метод.
Рисует заданный прямоугольник x, y, w, h с закругленными углами.
Данная функция была добавлена в Qt 4.4.
void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)
Это перегруженный метод.
Рисует заданный прямоугольник rect с закругленными углами.
Данная функция была добавлена в Qt 4.4.
void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
Рисует заданный staticText в заданной точке topLeftPosition.
Текст будет нарисован с использованием шрифта и преобразования, установленных в рисовальщике. Если шрифт и/или преобразование, установленные в рисовальщике, отличаются от тех, которые использовались для инициализации макета QStaticText, то макет должен быть пересчитан. Используйте QStaticText::prepare(), чтобы инициализировать staticText с помощью шрифта и преобразования, с помощью которых он будет впоследствии нарисован.
Если topLeftPosition не совпадает с тем, что было при инициализации staticText или при последнем рисовании, то при перемещении текста в новое положение будет небольшая накладная стоимость.
Примечание: Если преобразование рисовальщика не аффинное, то staticText будет нарисован с помощью обычных вызовов drawText(), и все преимущества производительности будут утеряны.
Примечание: Координата y используется как верхняя часть шрифта.
Данная функция была добавлена в Qt 4.7.
См. также QStaticText.
void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
Это перегруженный метод.
Рисует staticText в точке topLeftPosition.
Примечание: Координата y используется как верхняя часть шрифта.
Данная функция была добавлена в Qt 4.7.
void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)
Это перегруженный метод.
Рисует staticText в координатах left и top.
Примечание: Координата y используется как верхняя часть шрифта.
Данная функция была добавлена в Qt 4.7.
void QPainter::drawText(const 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 = nullptr)
Это перегруженный метод.
Рисует заданный text внутри заданного rectangle. Rectangle вместе с флагами выравнивания определяет якоря для text.
QPainter painter(this);
painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject")); |
boundingRect (если не равен null) устанавливается в значение, которое должно содержать весь текст. Например, на следующем изображении пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет rectangle:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Аргумент flags представляет собой побитовое ИЛИ следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextDontClip
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
По умолчанию QPainter рисует текст с антиалиасингом.
Примечание: Координата y rectangle используется как верхняя часть шрифта.
См. также Qt::AlignmentFlag, Qt::TextFlag, boundingRect() и layoutDirection().
void QPainter::drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
Это перегруженный метод.
Рисует заданный text внутри заданного rectangle в соответствии с указанными flags.
boundingRect (если не null) устанавливается в значение, которое должно содержать весь текст. Например, на следующем изображении пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет rectangle:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
По умолчанию QPainter рисует текст с антиалиасингом.
Примечание: Координата y rectangle используется как верхняя часть шрифта.
См. также setFont() и setPen().
void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
Это перегруженный метод.
Рисует заданный текст text внутри прямоугольника с началом (x, y), шириной width и высотой height.
boundingRect (если не равен null) устанавливается в прямоугольник, который должен содержать весь текст. Например, на следующем изображении пунктирная линия представляет boundingRect, рассчитанный функцией, а штриховая линия представляет прямоугольник, определяемый x, y, width и height:
QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);
const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);
QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));
pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Аргумент flags представляет собой побитовое ИЛИ следующих флагов:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
По умолчанию, QPainter рисует текст с антиалиасингом.
Примечание: Координата y используется как верхняя часть шрифта.
См. также Qt::AlignmentFlag, Qt::TextFlag, setFont() и setPen().
void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Это перегруженный метод.
Рисует заданный текст text в прямоугольнике rectangle, используя option для управления его позиционированием и ориентацией.
По умолчанию, QPainter рисует текст с антиалиасингом.
Примечание: Координата y прямоугольника rectangle используется как верхняя часть шрифта.
См. также setFont() и setPen().
void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
Рисует плиткообразно pixmap внутри заданного rectangle с началом в заданной position.
Вызов drawTiledPixmap() похож на вызов drawPixmap() несколько раз для заполнения (плитирования) области изображением pixmap, но может быть значительно эффективнее в зависимости от используемой операционной системы.
См. также drawPixmap().
void QPainter::drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
Это перегруженный метод.
Рисует плиткообразно pixmap в указанном прямоугольнике.
(x, y) задает верхнюю левую точку в устройстве рисования, на которую будет нарисована плитка; с заданной шириной width и высотой height. (sx, sy) задает верхнюю левую точку в pixmap, которая будет нарисована; по умолчанию это (0, 0).
void QPainter::drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = ...)
Это перегруженный метод.
Рисует плиткообразно pixmap внутри заданного rectangle с началом в заданной position.
bool QPainter::end()
Завершает рисование. Все ресурсы, используемые во время рисования, освобождаются. Обычно вызывать это не нужно, так как оно вызывается деструктором.
Возвращает true если рисовальщик больше не активен; в противном случае возвращает false.
См. также begin() и isActive().
void QPainter::endNativePainting()
Восстанавливает рисовальщик после ручного выполнения команд рисования нативного уровня. Позволяет рисовальщику восстановить любой нативный состояние, на котором он полагается, прежде чем вызывать другие команды рисовальщика.
Эта функция была добавлена в Qt 4.6.
См. также beginNativePainting().
void QPainter::eraseRect(const QRectF &rectangle)
Очищает область внутри заданного прямоугольника rectangle. Эквивалентно вызову
fillRect(rectangle, background()).
См. также fillRect().
void QPainter::eraseRect(int x, int y, int width, int height)
Это перегруженный метод.
Очищает область внутри прямоугольника, начинающегося с (x, y) с заданной шириной и высотой.
void QPainter::eraseRect(const QRect &rectangle)
Это перегруженный метод.
Очищает область внутри заданного прямоугольника rectangle.
void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)
Заполняет заданный путь path с помощью указанной brush. Контур не рисуется.
В качестве альтернативы, можно указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть сплошного цвета.
См. также drawPath().
void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)
Заполняет указанный прямоугольник rectangle заданной brush.
В качестве альтернативы, можно указать QColor вместо QBrush; конструктор QBrush (принимающий аргумент QColor) автоматически создаст кисть сплошного цвета.
См. также drawRect().
void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся с (x, y) с заданной шириной и высотой, используя заданную brush.
void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанной brush.
void QPainter::fillRect(const QRectF &rectangle, const QColor &color)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным цветом color.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся с (x, y) с заданной шириной и высотой, используя заданный цвет color.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(const QRect &rectangle, const QColor &color)
Это перегруженный метод.
Заполняет заданный прямоугольник rectangle указанным цветом color.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет прямоугольник, начинающийся с (x, y) с заданной шириной и высотой, используя заданный цвет color.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)
Это перегруженный метод.
Заполняет заданный прямоугольник указанным цветом.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)
Это перегруженная функция.
Заполняет заданный прямоугольник указанным цветом.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
Это перегруженная функция.
Заполняет прямоугольник, начинающийся в точке (x, y) заданной шириной и высотой, используя указанный стиль кисти.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)
Это перегруженная функция.
Заполняет заданный прямоугольник указанным стилем кисти.
Эта функция была добавлена в Qt 4.5.
void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle 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() и Настройки.
QPainter::RenderHints QPainter::renderHints() const
Возвращает флаг, который определяет установленные подсказки рендеринга для данного отрисовщика.
См. также setRenderHints(), testRenderHint() и Качество рендеринга.
void QPainter::resetTransform()
Сбрасывает все преобразования, которые были выполнены с помощью translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() и setWindow().
См. также Преобразования координат.
void QPainter::restore()
Восстанавливает текущее состояние отрисовщика (выталкивает сохранённое состояние из стека).
См. также save().
void QPainter::rotate(qreal angle)
Поворачивает систему координат по часовой стрелке. Указанный параметр angle задан в градусах.
См. также setWorldTransform() и Преобразования координат.
void QPainter::save()
Сохраняет текущее состояние отрисовщика (заносит состояние в стек). Функция save() должна сопровождаться соответствующей функцией restore(); функция end() разворачивает стек.
См. также restore().
void QPainter::scale(qreal sx, qreal sy)
Масштабирует систему координат на (sx, sy).
См. также setWorldTransform() и Преобразования координат.
void QPainter::setBackground(const QBrush &brush)
Устанавливает кисть фона отрисовщика на заданную brush.
Кисть фона — это кисть, которая используется для заполнения при отрисовке непрозрачного текста, штрихованных линий и растровых изображений. Кисть фона не имеет эффекта в режиме прозрачного фона (который является значением по умолчанию).
См. также background(), setBackgroundMode() и Настройки.
void QPainter::setBackgroundMode(Qt::BGMode mode)
Устанавливает режим фона отрисовщика на заданный mode.
Qt::TransparentMode (значение по умолчанию) рисует штрихованные линии и текст без установки пикселей фона. Qt::OpaqueMode заполняет эти области текущим цветом фона.
Обратите внимание, что для прозрачной отрисовки растрового изображения или пиксельного изображения необходимо использовать QPixmap::setMask().
См. также backgroundMode(), setBackground() и Настройки.
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 с использованием заданной операции operation.
void QPainter::setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)
Включает обрезку и задаёт область обрезки прямоугольником, начинающимся в точке (x, y) с заданной width и height.
void QPainter::setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip)
Устанавливает область обрезки на заданную region, используя указанную операцию обрезки operation. По умолчанию операция обрезки заменяет текущую область обрезки.
Обратите внимание, что область обрезки задана в логических координатах.
См. также clipRegion(), setClipRect() и Обрезка.
void QPainter::setClipping(bool enable)
Включает обрезку, если enable равно true, или отключает обрезку, если enable равно false.
См. также hasClipping() и Обрезка.
void QPainter::setCompositionMode(QPainter::CompositionMode mode)
Устанавливает режим композиции на заданный mode.
Предупреждение: Только QPainter, работающий с QImage, полностью поддерживает все режимы композиции. Режимы RasterOp поддерживаются для X11, как описано в compositionMode().
См. также compositionMode().
void QPainter::setFont(const QFont &font)
Устанавливает шрифт рисовальщика на заданный font.
Этот шрифт используется последующими функциями drawText(). Цвет текста совпадает с цветом пера.
Если вы установите шрифт, недоступный для Qt, 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(QPainter::RenderHint hint, bool on = true)
Устанавливает заданный параметр рендеринга hint в рисовальщике, если on равно true; в противном случае очищает параметр рендеринга.
См. также setRenderHints(), renderHints() и Качество рендеринга.
void QPainter::setRenderHints(QPainter::RenderHints hints, bool on = true)
Устанавливает заданные параметры рендеринга hints в рисовальщике, если on равно true; в противном случае очищает параметры рендеринга.
Эта функция была добавлена в Qt 4.2.
См. также setRenderHint(), renderHints() и Качество рендеринга.
void QPainter::setTransform(const QTransform &transform, bool combine = false)
Устанавливает матрицу преобразования мира. Если combine равно true, заданное преобразование transform комбинируется с текущей матрицей; в противном случае оно заменяет текущую матрицу.
Эта функция была добавлена в Qt 4.3.
См. также transform() и setWorldTransform().
void QPainter::setViewTransformEnabled(bool enable)
Включает преобразования вида, если enable равно true, или отключает преобразования вида, если enable равно false.
См. также viewTransformEnabled() и Преобразование окно-порт.
void QPainter::setViewport(const QRect &rectangle)
Устанавливает прямоугольник области просмотра рисовальщика на заданный rectangle и включает преобразования вида.
Прямоугольник области просмотра является частью преобразования вида. Область просмотра определяет систему координат устройства. Её сестра, window(), определяет логическую систему координат.
По умолчанию прямоугольник области просмотра совпадает с прямоугольником устройства.
См. также viewport(), viewTransformEnabled() и Преобразование окно-порт.
void QPainter::setViewport(int x, int y, int width, int height)
Это перегруженный метод.
Устанавливает прямоугольник области просмотра рисовальщика на прямоугольник, начинающийся в точке (x, y) с заданной width и height.
void QPainter::setWindow(const QRect &rectangle)
Устанавливает окно рисовальщика на заданный rectangle и включает преобразования вида.
Прямоугольник окна является частью преобразования вида. Окно определяет логическую систему координат. Её сестра, viewport(), определяет систему координат устройства.
По умолчанию прямоугольник окна совпадает с прямоугольником устройства.
См. также window(), viewTransformEnabled() и Преобразование окно-порт.
void QPainter::setWindow(int x, int y, int width, int height)
Это перегруженный метод.
Устанавливает окно рисовальщика на прямоугольник, начинающийся в точке (x, y) с заданной width и height.
void QPainter::setWorldMatrixEnabled(bool enable)
Включает преобразования, если enable равно true, или отключает преобразования, если enable равно false. Матрица преобразования мира не изменяется.
Эта функция была добавлена в Qt 4.2.
См. также worldMatrixEnabled(), worldTransform() и Преобразования координат.
void QPainter::setWorldTransform(const QTransform &matrix, bool combine = false)
Устанавливает матрицу преобразования мира. Если combine имеет значение true, указанная matrix комбинируется с текущей матрицей; в противном случае она заменяет текущую матрицу.
См. также worldTransform(), transform() и setTransform().
void QPainter::shear(qreal sh, qreal sv)
Выполняет сдвиг координатной системы на (sh, sv).
См. также setWorldTransform() и Преобразования координат.
void QPainter::strokePath(const QPainterPath &path, const QPen &pen)
Рисует контур (обводку) пути path с помощью пера, заданного pen
См. также fillPath() и Рисование.
bool QPainter::testRenderHint(QPainter::RenderHint hint) const
Возвращает true если hint установлен; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.3.
См. также renderHints() и setRenderHint().
const QTransform &QPainter::transform() const
Возвращает матрицу преобразования мира.
См. также setTransform() и worldTransform().
void QPainter::translate(const QPointF &offset)
Переводит координатную систему на заданный offset; т.е. заданный offset добавляется к точкам.
См. также setWorldTransform() и Преобразования координат.
void QPainter::translate(const QPoint &offset)
Это перегруженная функция.
Переводит координатную систему на заданный offset.
void QPainter::translate(qreal dx, qreal dy)
Это перегруженная функция.
Переводит координатную систему на вектор (dx, dy).
bool QPainter::viewTransformEnabled() const
Возвращает true если включено преобразование вида; в противном случае возвращает false.
См. также setViewTransformEnabled() и worldTransform().
QRect QPainter::viewport() const
Возвращает прямоугольник области просмотра.
См. также setViewport() и setViewTransformEnabled().
QRect QPainter::window() const
Возвращает прямоугольник окна.
См. также setWindow() и setViewTransformEnabled().
bool QPainter::worldMatrixEnabled() const
Возвращает true если включено преобразование мира; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.2.
См. также setWorldMatrixEnabled(), worldTransform() и Система координат.
const QTransform &QPainter::worldTransform() const
Возвращает матрицу преобразования мира.
См. также setWorldTransform().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qpainter.html