#include "rectangle.h" Rectangle::Rectangle() : Line() { } bool Rectangle::isHit(const QPoint &clickPoint) { QVector3D a(p2() - p1()); QVector3D r1(p1()); QVector3D rq(clickPoint); float dist = rq.distanceToLine(r1, a.normalized()); return dist < 5; } void Rectangle::draw(QPainter *painter) { if (m_selected) { QPen penTemp(Qt::DotLine); penTemp.setColor(Qt::red); painter->setPen(penTemp); painter->drawEllipse(p1(), 5, 5); painter->drawEllipse(QPoint(p1().rx() + (p2().rx() - p1().rx()), p1().ry()), 5, 5); painter->drawEllipse(QPoint(p1().rx(), p1().ry() + (p2().ry() - p1().ry())), 5, 5); painter->drawEllipse(p2(), 5, 5); } else { QPen penNormal(Qt::SolidLine); penNormal.setColor(Qt::black); painter->setPen(penNormal); } painter->drawRect(QRect(p1(), p2())); }