На этом шаге рассмотрим построение графической траектории.
Графическая траектория может состоять из различных геометрических объектов: прямоугольников, эллипсов и других фигур различной сложности. Ее основное преимущество заключается в том, что, единожды создав траекторию, ее можно отображать сколько угодно раз, одним лишь вызовом метода QPainter::drawPath(). Пример на рис. 1 иллюстрирует траекторию, созданную из трех геометрических объектов: прямоугольника, эллипса и кривой Безье.
Рис.1. Пример графической траектории
QPainterPath path; QPointF pt1(width(), height() / 2); QPointF pt2(width() / 2, -height()); QPointF pt3(width() / 2, 2 * height()); QPointF pt4(0, height() / 2); path.moveTo(pt1); path.cubicTo(pt2, pt3, pt4); QRect rect(width()/2, height()/2, width()/4, height()/4); path.addRect(rect); QRect rect2(width()/4, height()/4, width()/4, height()/4); path.addRect(rect2); QRect rect1(width()/2-100, height()/2-100, width()/4+100, height()/4+100); path.addEllipse(rect1); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(Qt::blue, 6)); painter.drawPath(path);
Файлы приложения можно взять здесь.
На следующем шаге рассмотрим использование отсечения.