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 /polygon.cpp | |
| parent | 31eb4d5361026dad3107dc647ac7c3ff63f50c7b (diff) | |
| download | GUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.tar.gz GUI_SS2015-2778d2d6c0821a7a1622ca4312416739525781be.zip | |
Add different shapes for drawing
Diffstat (limited to 'polygon.cpp')
| -rw-r--r-- | polygon.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/polygon.cpp b/polygon.cpp new file mode 100644 index 0000000..a292653 --- /dev/null +++ b/polygon.cpp @@ -0,0 +1,47 @@ +#include "polygon.h" + +Polygon::Polygon() + : Line() +{ + m_polygon.append(QPoint(0,0)); + m_polygon.append(QPoint(0,0)); + m_polygon.append(QPoint(0,0)); +} + +bool Polygon::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 Polygon::draw(QPainter *painter) +{ + if (m_selected) + { + QPen penTemp(Qt::DotLine); + penTemp.setColor(Qt::red); + painter->setPen(penTemp); + + painter->drawEllipse(p1(), 5, 5); + painter->drawEllipse(p2(), 5, 5); + painter->drawEllipse(QPoint(p1().rx() + 20, p1().ry() - 20), 5, 5); + } + else + { + QPen penNormal(Qt::SolidLine); + penNormal.setColor(Qt::black); + painter->setPen(penNormal); + } + + m_polygon.replace(0, p1()); + m_polygon.replace(1, p2()); + m_polygon.replace(2, QPoint(p1().rx() + 20, p1().ry() - 20)); + + painter->drawPolygon(m_polygon); +} |
