diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-17 19:19:38 +0200 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2015-05-17 19:19:38 +0200 |
| commit | 2778d2d6c0821a7a1622ca4312416739525781be (patch) | |
| tree | 8589cab180728a024b8bd29a01fd9a5e85e9bce4 /rectangle.cpp | |
| parent | 31eb4d5361026dad3107dc647ac7c3ff63f50c7b (diff) | |
| download | GUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.tar.gz GUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.zip | |
Add different shapes for drawing
Diffstat (limited to 'rectangle.cpp')
| -rw-r--r-- | rectangle.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/rectangle.cpp b/rectangle.cpp new file mode 100644 index 0000000..f07651c --- /dev/null +++ b/rectangle.cpp @@ -0,0 +1,42 @@ +#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())); +} |
