Описание класса QPen
|
QPen () | |
QPen ( Qt::PenStyle style ) | |
QPen ( const QColor & color ) | |
QPen ( const QBrush & brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin ) | |
QPen ( const QPen & pen ) | |
~QPen () | |
QBrush | brush () const |
Qt::PenCapStyle | capStyle () const |
QColor | color () const |
qreal | dashOffset () const |
QVector<qreal> | dashPattern () const |
bool | isCosmetic () const |
bool | isSolid () const |
Qt::PenJoinStyle | joinStyle () const |
qreal | miterLimit () const |
void | setBrush ( const QBrush & brush ) |
void | setCapStyle ( Qt::PenCapStyle style ) |
void | setColor ( const QColor & color ) |
void | setCosmetic ( bool cosmetic ) |
void | setDashOffset ( qreal offset ) |
void | setDashPattern ( const QVector<qreal> & pattern ) |
void | setJoinStyle ( Qt::PenJoinStyle style ) |
void | setMiterLimit ( qreal limit ) |
void | setStyle ( Qt::PenStyle style ) |
void | setWidth ( int width ) |
void | setWidthF ( qreal width ) |
Qt::PenStyle | style () const |
int | width () const |
qreal | widthF () const |
operator QVariant () const | |
bool | operator!= ( const QPen & pen ) const |
QPen & | operator= ( const QPen & pen ) |
bool | operator== ( const QPen & pen ) const |
QDataStream & | operator<< ( QDataStream & stream, const QPen & pen ) |
QDataStream & | operator>> ( QDataStream & stream, QPen & pen ) |
Класс QPen определяет, как должен QPainter рисовать линии и контуры фигур.
Перо имеет style(), width(), brush(), capStyle() и joinStyle().
Стиль пера определяет тип линии. Кисть используют для заполнения областей, созданных с помощью пера. Используйте класс QBrush для определения стилей заполнения. Стиль окончаний (cap style) определяет, как QPainter будет отрисовывать окончание линии, в то время как стиль соединения определяет, как линии соединяются при отрисовке. Толщина пера может быть установлена и как целое число (width()), и как вещественное число (widthF()). Линия с толщиной ноль определяет косметическое (cosmetic) перо. Это означает, что толщина пера всегда равна одному пикселю, независимо от установок трансформации рисовальщика (painter).
Различные параметры могут быть легко изменены с помощью функций setStyle(), setWidth(), setBrush(), setCapStyle() и setJoinStyle() (помните, что перо рисовальщика должно быть сброшено при установке других свойств пера).
Например:
QPainter painter(this); QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen);
что эквивалентно
QPainter painter(this);
QPen pen(); // создаёт перо по умолчанию
pen.setStyle(Qt::DashDotLine);
pen.setWidth(3);
pen.setBrush(Qt::green);
pen.setCapStyle(Qt::RoundCap);
pen.setJoinStyle(Qt::RoundJoin);
painter.setPen(pen);
По умолчанию перо является сплошным чёрным с толщиной 0, имеет прямоугольный стиль окончания (Qt::SquareCap), и тип соединений напрямую (Qt::BevelJoin).
В добавок к этому, QPen предоставляет вспомогательные функции color() и setColor() для получения и установки цвета кисти пера. Перья можно сравнивать и использовать как потоки.
Для более подробной информации о рисовании в целом смотрите документацию Система рисования.
Qt обеспечивает несколько встроенных стилей, представленных в перечислении Qt::PenStyle:
Qt::SolidLine | Qt::DashLine | Qt::DotLine |
Qt::DashDotLine | Qt::DashDotDotLine | Qt::CustomDashLine |
Просто используйте функцию setStyle() для перевода стиля пера в один из встроенных стилей, за исключением Qt::CustomDashLine, к описанию которого мы вернёмся позже. Установка стиля в Qt::NoPen приводит к тому, что не рисуются ни линии, ни контуры. По умолчанию стиль установлен в Qt::SolidLine.
Начиная с Qt 4.1 также возможно определить свой шаблон штрихов линии, используя функцию setDashPattern(), которая также неявно переводит стиль пера в Qt::CustomDashLine. Аргумент-шаблон, QVector, должен определять, как каждое из вхождений qreal образуют шаблон, часть из них являются штрихом (вхождения 1, 3, 5...), другая - просветом (вхождения 2, 4, 6...). Например, ниже показан пример создания шаблона:
QPen pen; QVector<qreal> dashes; qreal space = 4; dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space; pen.setDashPattern(dashes);
Помните, что шаблон линии определяется в единицах толщины пера, например, штрих длиной 5 единиц при толщине линии 10 пикселей имеет длину 50 пикселей.
Текущий шаблон линий может быть доступен с помощью функции dashPattern(). Используйте функцию isSolid() для определения, является ли линия, которую рисует перо, сплошной.
Стиль окончаний определяет, как будут отрисовываться окончания линий, используя QPainter. Стиль окончаний применяется только при толщине 1 или более. Перечисление Qt::PenCapStyle представляет следующие стили:
Qt::SquareCap | Qt::FlatCap | Qt::RoundCap |
Стиль Qt::SquareCap определяет квадратное окончание и закрывает конечную точку другой линии на половину от ширины. Стиль Qt::FlatCap определяет квадратное окончание и не закрывает конечную точку другой линии. А Qt::RoundCap определяет скруглённое окончание.
По умолчанию стоит Qt::SquareCap.
Отображается или нет конечная точка, когда толщина 0 или 1, зависит от стиля окончания. При использовании Qt::SquareCap или Qt::RoundCap, окончания отрисовываются, а при использовании Qt::FlatCap - нет.
Стиль соединений определяет, как будет происходить соединение двух линий, используя QPainter. Стиль соединений применяется только при толщине 1 или более. Перечисление Qt::PenJoinStyle представляет следующие стили:
Qt::BevelJoin | Qt::MiterJoin | Qt::RoundJoin |
Стиль Qt::BevelJoin определяет, что линии будут соединяться напрямую. Стиль Qt::MiterJoin расширяет линии до пересечения под углом. А стиль Qt::RoundJoin соединяет линии дугой, вписанной в угол между линиями.
По умолчанию используется Qt::BevelJoin.
Когда применяется стиль Qt::MiterJoin, можно использовать setMiterLimit() для определения, насколько скруглённое соединение может быть отдалено от точки соединения. miterLimit() используется для уменьшения искажений, когда линии почти параллельны.
miterLimit() должен быть определён в единицах толщины пера, то есть при его значении 5 единиц и толщине 10 единиц получится 50 пикселей. Значение предела митры по умолчанию равно 2 единицам, т.е. удвоенной толщине пера в пикселях.
Пример сглаживания Этот пример показывает встроенные в Qt шаблоны линий, а также демонстрирует создание пользовательских линий с помощью изменения некоторых параметров. |
Смотрите также QPainter, QBrush, Демонстрационная программа "Path Stroking" и Пример "Scribble".
Создает стандартное сплошное черное перо с толщиной равной 0.
Создает черное перо с толщиной равной 0 и стилем style.
Смотрите также setStyle().
Создает перо с цветом color и толщиной равной 0.
Смотрите также setBrush() и setColor().
Создает перо с заданной кистью brush, толщиной width, стилем пера style, стилем окончаний cap и стилем соединения join style.
Смотрите также setBrush(), setWidth(), setStyle(), setCapStyle() и setJoinStyle().
Создает перо, являющееся копией pen.
Уничтожает перо.
Возвращает кисть, используемую для заполнения областей, созданных данным пером.
Смотрите также setBrush().
Возвращает стиль окончаний пера.
Смотрите также setCapStyle() и Стиль окончаний.
Возвращает цвет кисти пера.
Смотрите также brush() и setColor().
Возвращает смещение штриха для пера.
Смотрите также setDashOffset().
Возвращает образец штриха данного пера.
Смотрите также setDashPattern(), style() и isSolid().
Возвращает true, если перо является косметическим; в противном случае возвращает false.
Косметическое перо используется для рисования областей, которые должны иметь постоянную ширину при любых трансформациях, применяемых к QPainter, к которому относятся эти области. Рисование фигур косметическим пером позволяет быть уверенным, что их контурная линия не будет зависеть от масштабирующих воздействий.
Нулевая толщина пера по умолчанию показывает, что перо является косметическим; перо с ненулевым значением толщины косметическим не является.
Смотрите также setCosmetic() и widthF().
Возвращает true, если перо имеет непрерывное заполнение, иначе возвращается false.
Смотрите также style() и dashPattern().
Возвращает стиль соединений пера.
Смотрите также setJoinStyle() и Стиль соединений.
Возвращает предел митры пера. Предел митры пера уместен только в том случае, если стиль соединений линий пера установлен в Qt::MiterJoin.
Смотрите также setMiterLimit() и Стиль соединений.
Устанавливает кисть, используемую пером для заполнения форм, в brush.
Смотрите также brush() и setColor().
Устанавливает стиль окончаний пера в style. Значение по умолчанию - Qt::SquareCap.
Смотрите также capStyle() и Стиль окончаний.
Устанавливает цвет пера в color.
Смотрите также setBrush() и color().
Устанавливает, является ли перо косметическим, в зависимости от значения cosmetic.
Смотрите также isCosmetic().
Устанавливает смещение штрихов (начальная точка шаблона штрихов) для этого пера равным указанному offset. Смещение измеряется в единицах, используемых для задания шаблона штрихов.
Например, шаблон, в котором каждый штрих длиной четыре единицы с последующим разрывом в две единицы, начнётся со штриха при отрисовки линии. Тем не менее, если смещение штриха равно 4.0, то любая рисуемая линия начнётся с разрыва. Значения смещение вплоть до 4.0 приведут к отрисовке вначале части штриха, а значения между 4.0 и 6.0 приведут к тому, что линия начнётся с части разрыва. |
Замечание: Это неявно преобразует стиль пера в Qt::CustomDashLine.
Смотрите также dashOffset().
Устанавливает стиль линии пера в pattern. Это также устанавливает стиль пера в Qt::CustomDashLine.
Шаблон должен быть задан чётным числом положительных значений, где значения с номерами 1, 3, 5... - это длины штрихов, а с номерами 2, 4, 6... длины пропусков. Например:
QPen pen; QVector<qreal> dashes; qreal space = 4; dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space; pen.setDashPattern(dashes); |
Образец линии пера задается в единицах толщины пера; например, штрих длиной в 5 единиц при толщине линии 10 пикселей имеет длину 50 пикселей. Обратите внимание на то, что перо с нулевой толщиной эквивалентно косметическому перу с толщиной равной 1 пикселю.
Каждый из штрихов подчинен стилям окончания, так что штрих длиной в 1 пиксель при квадратных окончаниях линий будет растянут на 0.5 пикселей в каждом из направлений и в результате длина штриха будет равна 2 пикселям.
Помните, что по умолчанию стиль окончаний линии равен Qt::SquareCap, это означает, что линия завершается прямоугольно и закрывает конечную точку и расширяется на половину от ширины.
Смотрите также setStyle(), dashPattern(), setCapStyle() и setCosmetic().
Устанавливает стиль соединений пера в style. Значение по умолчанию - Qt::BevelJoin.
Смотрите также joinStyle() и Стиль соединений.
Устанавливает предел митры пера в limit.
Предел митры указывает, как далеко может простираться митра от точки соединения линий. Он используется для уменьшения закрашиваемой области между соединяющимися линиями в случаях, когда линии почти параллельны.
Имеет значение только тогда, когда стиль пера установлен в Qt::MiterJoin. Значение задается в единицах толщины пера, то есть при его значении 5 единиц и толщине 10 получится 50 пикселей. Значение предела митры по умолчанию равно 2 единицам, т.е. удвоенной толщине пера в пикселях.
Смотрите также miterLimit(), setJoinStyle() и Стиль соединений.
Устанавливает стиль пера в style.
Для получения списка всех стилей пера смотрите описание Qt::PenStyle. С Qt 4.1 также возможно определить свой шаблон штрихов линии, используя функцию setDashPattern(), которая также переводит стиль пера в Qt::CustomDashLine.
Замечание: Эта функция сбрасывает значение смещения штриха в нуль.
Смотрите также style() и Стиль пера.
Устанавливает толщину пера width в пикселях с точностью до целого числа.
Линия с толщиной ноль определяет косметическое (cosmetic) перо. Это означает, что толщина пера всегда равна одному пикселю, независимо от установок трансформации рисовальщика (painter).
Установка толщины пера в отрицательные значения не поддерживается.
Смотрите также setWidthF() и width().
Устанавливает толщину пера равной width в пикселях с помощью числа с плавающей точкой.
Линия с толщиной ноль определяет косметическое (cosmetic) перо. Это означает, что толщина пера всегда равна одному пикселю, независимо от установок трансформации рисовальщика (painter).
Установка толщины пера в отрицательные значения не поддерживается.
Смотрите также setWidth() и widthF().
Возвращает стиль пера.
Смотрите также setStyle() и Стиль пера.
Возвращает толщину пера в виде целого числа.
Смотрите также setWidth() и widthF().
Возвращает толщину пера в виде числа с плавающей точкой.
Смотрите также setWidthF() и width().
Возвращает перо как QVariant.
Возвращает true, если данное перо отлично от пера pen; в противном случае возвращает false. Два пера различны, если они имеют разные стили, ширину или цвет.
Смотрите также operator==().
Присваивает значение пера pen данному перу и возвращает ссылку на данное перо.
Возвращает true, если данное перо эквивалентно pen; в противном случае возвращает false. Два пера одинаковы, если они имеют эквивалентные стили, ширину и цвет.
Смотрите также operator!=().
Записывает перо pen в поток stream и возвращает ссылку на поток stream.
Смотрите также Формат операторов QDataStream.
Читает из потока stream в перо pen и возвращает ссылку на поток stream.
Смотрите также Формат операторов QDataStream.
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |