Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Описание класса QPen
[модуль QtGui]

Класс QPen определяет, как должен QPainter рисовать линии и контуры фигур. Далее...

 #include <QPen>

Открытые функции

Связанные не-члены


Подробное описание

Класс 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::SolidLineQt::DashLineQt::DotLine
Qt::DashDotLineQt::DashDotDotLineQt::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;

 pen.setDashPattern(dashes);

Помните, что шаблон линии определяется в единицах толщины пера, например, штрих длиной 5 единиц при толщине линии 10 пикселей имеет длину 50 пикселей.

Текущий шаблон линий может быть доступен с помощью функции dashPattern(). Используйте функцию isSolid() для определения, является ли линия, которую рисует перо, сплошной.

Стиль окончаний

Стиль окончаний определяет, как будут отрисовываться окончания линий, используя QPainter. Стиль окончаний применяется только при толщине 1 или более. Перечисление Qt::PenCapStyle представляет следующие стили:

Qt::SquareCapQt::FlatCapQt::RoundCap

Стиль Qt::SquareCap определяет квадратное окончание и закрывает конечную точку другой линии на половину от ширины. Стиль Qt::FlatCap определяет квадратное окончание и не закрывает конечную точку другой линии. А Qt::RoundCap определяет скруглённое окончание.

По умолчанию стоит Qt::SquareCap.

Отображается или нет конечная точка, когда толщина 0 или 1, зависит от стиля окончания. При использовании Qt::SquareCap или Qt::RoundCap, окончания отрисовываются, а при использовании Qt::FlatCap - нет.

Стиль соединений

Стиль соединений определяет, как будет происходить соединение двух линий, используя QPainter. Стиль соединений применяется только при толщине 1 или более. Перечисление Qt::PenJoinStyle представляет следующие стили:

Qt::BevelJoinQt::MiterJoinQt::RoundJoin

Стиль Qt::BevelJoin определяет, что линии будут соединяться напрямую. Стиль Qt::MiterJoin расширяет линии до пересечения под углом. А стиль Qt::RoundJoin соединяет линии дугой, вписанной в угол между линиями.

По умолчанию используется Qt::BevelJoin.

Когда применяется стиль Qt::MiterJoin, можно использовать setMiterLimit() для определения, насколько скруглённое соединение может быть отдалено от точки соединения. miterLimit() используется для уменьшения искажений, когда линии почти параллельны.

miterLimit() должен быть определён в единицах толщины пера, то есть при его значении 5 единиц и толщине 10 единиц получится 50 пикселей. Значение предела митры по умолчанию равно 2 единицам, т.е. удвоенной толщине пера в пикселях.

Пример сглаживания

Этот пример показывает встроенные в Qt шаблоны линий, а также демонстрирует создание пользовательских линий с помощью изменения некоторых параметров.

Смотрите также QPainter, QBrush, Path Stroking Demo и Scribble Example.


Описание функций-членов

QPen::QPen ()

Создает стандартное сплошное черное перо с толщиной равной 0.

QPen::QPen ( Qt::PenStyle style )

Создает черное перо с толщиной равной 0 и стилем style.

Смотрите также setStyle().

QPen::QPen ( const QColor & color )

Создает перо с цветом color и толщиной равной 0.

Смотрите также setBrush() и setColor().

QPen::QPen ( const QBrush & brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin )

Создает перо с заданной кистью brush, толщиной width, стилем пера style, стилем окончаний cap и стилем соединения join style.

Смотрите также setBrush(), setWidth(), setStyle(), setCapStyle() и setJoinStyle().

QPen::QPen ( const QPen & pen )

Создает перо, являющееся копией pen.

QPen::~QPen ()

Уничтожает перо.

QBrush QPen::brush () const

Возвращает кисть, используемую для заполнения областей, созданных данным пером.

Смотрите также setBrush().

Qt::PenCapStyle QPen::capStyle () const

Возвращает стиль окончаний пера.

Смотрите также setCapStyle() и Cap Style.

QColor QPen::color () const

Возвращает цвет кисти пера.

Смотрите также brush() и setColor().

qreal QPen::dashOffset () const

Возвращает смещение штриха для пера.

Смотрите также setDashOffset().

QVector<qreal> QPen::dashPattern () const

Возвращает образец штриха данного пера.

Смотрите также setDashPattern(), style() и isSolid().

bool QPen::isCosmetic () const

Возвращает true, если перо является косметическим; в противном случае возвращает false.

Косметическое перо используется для рисования областей, которые должны иметь постоянную ширину при любых трансформациях, применяемых к QPainter, к которому относятся эти области. Рисование фигур косметическим пером позволяет быть уверенным, что их контурная линия не будет зависеть от масштабирующих воздействий.

Нулевая толщина пера по умолчанию показывает, что перо является косметическим; перо с ненулевым значением толщины косметическим не является.

Смотрите также setCosmetic() и widthF().

bool QPen::isSolid () const

Возвращает true, если перо имеет непрерывное заполнение, иначе возвращается false.

Смотрите также style() и dashPattern().

Qt::PenJoinStyle QPen::joinStyle () const

Возвращает стиль соединений пера.

Смотрите также setJoinStyle() и Join Style.

qreal QPen::miterLimit () const

Возвращает предел митры пера. Предел митры пера уместен только в том случае, если стиль соединений линий пера установлен в Qt::MiterJoin.

Смотрите также setMiterLimit() и Join Style.

void QPen::setBrush ( const QBrush & brush )

Устанавливает кисть, используемую пером для заполнения форм, в brush.

Смотрите также brush() и setColor().

void QPen::setCapStyle ( Qt::PenCapStyle style )

Устанавливает стиль окончаний пера в style. Значение по умолчанию - Qt::SquareCap.

Смотрите также capStyle() и Cap Style.

void QPen::setColor ( const QColor & color )

Устанавливает цвет пера в color.

Смотрите также setBrush() и color().

void QPen::setCosmetic ( bool cosmetic )

Устанавливает, является ли перо косметическим, в зависимости от значения cosmetic.

Смотрите также isCosmetic().

void QPen::setDashOffset ( qreal offset )

Устанавливает смещение штрихов в линии для текущего пера в offset. Это также устанавливает стиль пера в Qt::CustomDashLine.

Смотрите также dashOffset().

void QPen::setDashPattern ( const QVector<qreal> & pattern )

Устанавливает стиль линии пера в 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;
 pen.setDashPattern(dashes);

Образец линии пера задается в единицах толщины пера, например, образец штриха длиной в 5 при толщине линии 10 пикселей имеет длину 50 пикселей. Каждый из штрихов подчинен стилям окончания, так что штрих длиной в 1 пиксель при квадратных окончаниях линий будет растянут на 0.5 пикселей в каждом из направлений и в результате длина штриха будет равна 2 пикселям.

Помните, что по умолчанию стиль окончаний линии равен Qt::SquareCap, это означает, что линия завершается прямоугольно и закрывает конечную точку и расширяется на половину от ширины.

Смотрите также setStyle(), dashPattern() и setCapStyle().

void QPen::setJoinStyle ( Qt::PenJoinStyle style )

Устанавливает стиль соединений пера в style. Значение по умолчанию - Qt::BevelJoin.

Смотрите также joinStyle() и Join Style.

void QPen::setMiterLimit ( qreal limit )

Устанавливает предел митры пера в limit.

Предел митры указывает, как далеко может простираться митра от точки соединения линий. Он используется для уменьшения закрашиваемой области между соединяющимися линиями в случаях, когда линии почти параллельны.

Имеет значение только тогда, когда стиль пера установлен в Qt::MiterJoin. Значение задается в единицах толщины пера, то есть при его значении 5 единиц и толщине 10 получится 50 пикселей. Значение предела митры по умолчанию равно 2 единицам, т.е. удвоенной толщине пера в пикселях.

Смотрите также miterLimit(), setJoinStyle() и Join Style.

void QPen::setStyle ( Qt::PenStyle style )

Устанавливает стиль пера в style.

Для получения списка всех стилей пера смотрите описание Qt::PenStyle. С Qt 4.1 также возможно определить свой шаблон штрихов линии, используя функцию setDashPattern(), которая также переводит стиль пера в Qt::CustomDashLine.

Смотрите также style() и Pen Style.

void QPen::setWidth ( int width )

Устанавливает толщину пера width в пикселях с точностью до целого числа.

Линия с толщиной ноль определяет косметическое (cosmetic) перо. Это означает, что толщина пера всегда равна одному пикселю, независимо от установок трансформации рисовальщика (painter).

Установка толщины пера в отрицательные значения не поддерживается.

Смотрите также setWidthF() и width().

void QPen::setWidthF ( qreal width )

Устанавливает толщину пера равной width в пикселях с помощью числа с плавающей точкой.

Линия с толщиной ноль определяет косметическое (cosmetic) перо. Это означает, что толщина пера всегда равна одному пикселю, независимо от установок трансформации рисовальщика (painter).

Установка толщины пера в отрицательные значения не поддерживается.

Смотрите также setWidth() и widthF().

Qt::PenStyle QPen::style () const

Возвращает стиль пера.

Смотрите также setStyle() и Pen Style.

int QPen::width () const

Возвращает толщину пера в виде целого числа.

Смотрите также setWidth() и widthF().

qreal QPen::widthF () const

Возвращает толщину пера в виде числа с плавающей точкой.

Смотрите также setWidthF() и width().

QPen::operator QVariant () const

Возвращает перо как QVariant.

bool QPen::operator!= ( const QPen & pen ) const

Возвращает true, если данное перо отлично от пера pen; в противном случае возвращает false. Два пера различны, если они имеют разные стили, ширину или цвет.

Смотрите также operator==().

QPen & QPen::operator= ( const QPen & pen )

Присваивает значение пера pen данному перу и возвращает ссылку на данное перо.

bool QPen::operator== ( const QPen & pen ) const

Возвращает true, если данное перо эквивалентно pen; в противном случае возвращает false. Два пера одинаковы, если они имеют эквивалентные стили, ширину и цвет.

Смотрите также operator!=().


Связанные не-члены

QDataStream & operator<< ( QDataStream & stream, const QPen & pen )

Это перегруженная функция, предоставленная для удобства.

Записывает перо pen в поток stream и возвращает ссылку на поток stream.

Смотрите также Формат операторов QDataStream.

QDataStream & operator>> ( QDataStream & stream, QPen & pen )

Это перегруженная функция, предоставленная для удобства.

Читает из потока stream в перо pen и возвращает ссылку на поток stream.

Смотрите также Формат операторов QDataStream.


Copyright © 2008 Trolltech Торговые марки
Qt 4.3.5