Составители:
Рубрика:
103
границ;
· backgroundMode() — является ли непрозрачным или прозрачным, т. е. используется или нет
background();
· background() применяется только тогда, когда backgroundMode уставлен в «прозрачен»;
· brushOrigin() — оригинальный узор кисти, обычно оригинальный фон виджета;
· viewport(), window(), matrix() — составляют систему преобразования координат (они будут
описаны чуть более подробно далее);
· hasClipping() — указывает, осущесвтляет ли класс обрезание по каким-либо границам. Если
обрезание осуществляется, то по региону, указанному в методе clipRegion();
· save() — сохраняет настройки во внутреннем стеке;
· restore() — восстанавливает их.
Класс QPainter предназначен для рисования и имеет множество примитивов, например:
drawPoint(), drawPoints(), drawLine(), drawRect(), drawRoundRect(), drawEllipse(),
drawArc(), drawPie(), drawChord(), drawLineSegments(), drawPolyline(), drawPolygon(),
drawConvexPolygon(), drawCubicBezier() и т. д.
Также есть функции для рисования на пиксельных картах/рисунках, а именно drawPixmap(),
drawImage() и drawTiledPixmap(). И drawPixmap() и drawImage() приводят к одному результату за
исключением того, что drawPixmap() быстрее работает на экране, а drawImage() может быть быстрее
на экземплярах класса QPrinter, или других устройствах.
Текст рисуется с помощью drawText(). Если необходимо точное расположение, то может быть
использован метод boundingRect(), возвращающий координаты, где данный drawText() выполнил
бы рисование.
Пара примеров:
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);
Ещё:
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);
Системы координат
Обычно QPainter работает на системе координат устройства, но QPainter хорошо поддерживает
различные преобразования систем координат. Например, наиболее часто используемыми являются
методы scale(), rotate(), translate() и shear(), все они работают с матрицей, возвращаемой по
вызову метода matrix(). Матрицу можно изменить и вручную, после чего изменения необходимо
развернуть, вызовом метода setMatrix().
Метод setViewport() устанавливает прямоугольник, на котором работает QPainter. Метод
setWindow() привязывает систему координат к этому прямоугольнику.
Небольшой фрагмент из примера по рисованию аналоговых часов:
void AnalogClock::paintEvent(QPaintEvent *)
{
Страницы
- « первая
- ‹ предыдущая
- …
- 101
- 102
- 103
- 104
- 105
- …
- следующая ›
- последняя »
