diff options
author | Titta Heikkala <titta.heikkala@digia.com> | 2013-09-17 12:35:46 +0300 |
---|---|---|
committer | Titta Heikkala <titta.heikkala@digia.com> | 2013-09-17 13:36:41 +0300 |
commit | 239996068798c06dd2a4ec155f1f3b5398fd8946 (patch) | |
tree | 3d2f2843024e0d5147a2149f81a39bbef23518d2 /examples | |
parent | f23ac19273506f9c0f9847ed336af2c36c202dc2 (diff) |
Add example of using image as a brush for scatter series
The ScatterChart Example is modified so that it shows how to use an
image as a brush for scatter series. The image is a star and it's
created using QPainterPath.
Task-number: QTRD-2078
Change-Id: Ie92ad56efafaf12af2efe4424be63060f812f9e2
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/scatterchart/chartview.cpp | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/examples/scatterchart/chartview.cpp b/examples/scatterchart/chartview.cpp index 84ccf533..6328cc24 100644 --- a/examples/scatterchart/chartview.cpp +++ b/examples/scatterchart/chartview.cpp @@ -20,6 +20,12 @@ #include "chartview.h" #include <QScatterSeries> +#include <QLegendMarker> +#include <QImage> +#include <QPainter> +#include <qmath.h> + +const float Pi = 3.14159f; ChartView::ChartView(QWidget *parent) : QChartView(new QChart(), parent) @@ -32,8 +38,13 @@ ChartView::ChartView(QWidget *parent) : QScatterSeries *series1 = new QScatterSeries(); series1->setName("scatter2"); - series1->setMarkerShape(QScatterSeries::MarkerShapeCircle); + series1->setMarkerShape(QScatterSeries::MarkerShapeRectangle); series1->setMarkerSize(20.0); + + QScatterSeries *series2 = new QScatterSeries(); + series2->setName("scatter3"); + series2->setMarkerShape(QScatterSeries::MarkerShapeRectangle); + series2->setMarkerSize(30.0); //![1] //![2] @@ -44,14 +55,45 @@ ChartView::ChartView(QWidget *parent) : series0->append(10, 5); *series1 << QPointF(1, 1) << QPointF(3, 3) << QPointF(7, 6) << QPointF(8, 3) << QPointF(10, 2); + *series2 << QPointF(1, 5) << QPointF(4, 6) << QPointF(6, 3) << QPointF(9, 5); //![2] //![3] + QPainterPath starPath; + starPath.moveTo(30, 15); + for (int i = 1; i < 5; ++i) { + starPath.lineTo(15 + 15 * qCos(0.8 * i * Pi), + 15 + 15 * qSin(0.8 * i * Pi)); + } + starPath.closeSubpath(); + + QImage star(30, 30, QImage::Format_ARGB32); + star.fill(Qt::transparent); + + QPainter painter(&star); + painter.setRenderHint(QPainter::Antialiasing); + painter.setPen(QRgb(0xf6a625)); + painter.setBrush(painter.pen().color()); + painter.drawPath(starPath); + + series2->setBrush(star); + series2->setPen(Qt::NoPen); + //![3] + + //![4] setRenderHint(QPainter::Antialiasing); chart()->addSeries(series0); chart()->addSeries(series1); + chart()->addSeries(series2); + chart()->setTitle("Simple scatterchart example"); chart()->createDefaultAxes(); chart()->setDropShadowEnabled(false); - //![3] + //![4] + + //![5] + QList<QLegendMarker *> markers = chart()->legend()->markers(series2); + for (int i = 0; i < markers.count(); i++) + markers.at(i)->setBrush(painter.pen().color()); + //![5] } |