Spec-Zone.ru › Qt 5.13

Рисование и заливка

Рисование

QPainter предоставляет высокооптимизированные функции для выполнения большинства операций рисования, необходимых в графических приложениях. Он может рисовать всё, начиная от простых графических примитивов (представленных классами QPoint, QLine, QRect, QRegion и QPolygon) до сложных фигур, таких как векторные пути. В Qt векторные пути представлены классом QPainterPath. QPainterPath предоставляет контейнер для операций рисования, позволяя создавать и повторно использовать графические фигуры.

QPainterPath

Путь рисования — это объект, состоящий из линий и кривых. Например, прямоугольник состоит из линий, а эллипс — из кривых.

Главное преимущество использования путей рисования по сравнению с обычными операциями рисования заключается в том, что сложные фигуры нужно создавать только один раз; затем их можно рисовать многократно, используя только вызовы функции QPainter::drawPath().

Объект QPainterPath можно использовать для заливки, обводки и обрезки. Для генерации заливаемых контуров для данного пути рисования используйте класс QPainterPathStroker.

Линии и контуры рисуются с помощью класса QPen. Ручка определяется её стилем (т. е. типом линии), шириной, кистью, способом рисования конечных точек (стиль окончания) и способом рисования соединений между двумя соединёнными линиями (стиль соединения). Кисть ручки — это объект QBrush, используемый для заливки штрихов, созданных ручкой, т. е. класс QBrush определяет узор заливки.

QPainter также может рисовать выровненный текст и пиксельмапы.

При рисовании текста шрифт задаётся с помощью класса QFont. Qt будет использовать шрифт с заданными атрибутами или, если соответствующий шрифт отсутствует, Qt будет использовать наиболее близкий установленный шрифт. Атрибуты фактически используемого шрифта можно получить с помощью класса QFontInfo. Кроме того, класс QFontMetrics предоставляет размеры шрифта, а класс QFontDatabase предоставляет информацию о доступных шрифтах в базовой системе окон.

Обычно QPainter рисует в «естественной» системе координат, но он может выполнять преобразования вида и мира с помощью класса QTransform. Дополнительную информацию см. в разделе Система координат, где также описывается процесс рендеринга, т. е. связь между логическим представлением и отображаемыми пикселями, и преимущества антиалиасинга при рисовании.

Антиалиасинг при рисовании

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

Значение QPainter::Antialiasing указывает, что движок должен выполнять антиалиасинг краёв примитивов, если это возможно, т. е. сглаживать края с помощью различных интенсивностей цвета.

Заливка

Фигуры заливаются с помощью класса QBrush. Кисть определяется своим цветом и своим стилем (т. е. узором заливки).

Любой цвет в Qt представлен классом QColor, который поддерживает цветовые модели RGB, HSV и CMYK. QColor также поддерживает альфа-смешанное контурирование и заливку (указание эффекта прозрачности), и класс независим от платформы и устройства (цвета отображаются на оборудовании с помощью класса QColormap). Дополнительную информацию см. в документации по классу QColor.

Доступные узоры заливки описаны в перечислении Qt::BrushStyle. Они включают в себя базовые узоры, начиная от однородного цвета и заканчивая очень разреженным узором, различные сочетания линий, градиентные заливки и текстуры. Qt предоставляет класс QGradient для определения пользовательских градиентных заливок, а узоры текстур задаются с помощью класса QPixmap.

QGradient

Класс QGradient используется в сочетании с QBrush для указания градиентных заливок.

В настоящее время Qt поддерживает три типа градиентных заливок: линейные градиенты интерполируют цвета между начальной и конечной точками, радиальные градиенты интерполируют цвета между фокусной точкой и конечными точками по окружности вокруг неё, а конические градиенты интерполируют цвета вокруг центральной точки.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/paintsystem-drawing.html

Spec-Zone.ru

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