Spec-Zone.ru › Qt

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

Рисование

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-6.2/paintsystem-drawing.html

Spec-Zone.ru

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