#include <QApplication>
#include <QPainter>
#include <qwt_plot_curve.h>
#include <qwt_plot.h>
#include <qwt_plot_marker.h>
#include <qwt_symbol.h>
{
public:
QSize boundingSize
() const;
private:
};
Symbol
::Symbol(const QPixmap &pixmap
): m_pixmap(pixmap)
{
}
QSize Symbol
::boundingSize() const {
return m_pixmap.size();
}
void Symbol
::drawSymbols(QPainter *painter,
const QPointF *points,
int numPoints
) const {
painter->save();
for(int i = 0; i < numPoints; ++i)
painter->drawPixmap(points[i], m_pixmap);
painter->restore();
}
int main (int argc, char **argv)
{
const int Size = 30;
double xval[Size];
double yval[Size];
for(int i = 0; i < Size; ++i) {
xval[i] = double(i) * 10.0 / double(Size - 1);
yval[i] = qSin(xval[i]) * qCos(2.0 * xval[i]);
}
curve.setRawSamples(xval, yval, Size);
curve.setSymbol(new Symbol(p1));
curve.attach(&myPlot);
mrk.
setLinePen(QPen(Qt
::black,
0, Qt
::DashDotLine));
mrk.setValue(0.5, 0.5);
mrk.setSymbol(new Symbol(p2));
mrk.attach(&myPlot);
myPlot.resize(640,480);
myPlot.show();
return a.exec();
}
#include <QApplication>
#include <QPainter>
#include <qwt_plot_curve.h>
#include <qwt_plot.h>
#include <qwt_plot_marker.h>
#include <qwt_symbol.h>
class Symbol:public QwtSymbol
{
public:
Symbol(const QPixmap &pixmap);
QSize boundingSize() const;
void drawSymbols( QPainter *, const QPointF *, int numPoints ) const;
private:
QPixmap m_pixmap;
};
Symbol::Symbol(const QPixmap &pixmap):
QwtSymbol(QwtSymbol::UserStyle),
m_pixmap(pixmap)
{
}
QSize Symbol::boundingSize() const
{
return m_pixmap.size();
}
void Symbol::drawSymbols(QPainter *painter, const QPointF *points, int numPoints) const
{
painter->save();
for(int i = 0; i < numPoints; ++i)
painter->drawPixmap(points[i], m_pixmap);
painter->restore();
}
int main (int argc, char **argv)
{
QApplication a(argc, argv);
const int Size = 30;
double xval[Size];
double yval[Size];
for(int i = 0; i < Size; ++i) {
xval[i] = double(i) * 10.0 / double(Size - 1);
yval[i] = qSin(xval[i]) * qCos(2.0 * xval[i]);
}
QwtPlot myPlot;
QwtPlotCurve curve("Curve");
curve.setRawSamples(xval, yval, Size);
QPixmap p1("p1.png");
curve.setSymbol(new Symbol(p1));
curve.attach(&myPlot);
QwtPlotMarker mrk;
mrk.setLinePen(QPen(Qt::black, 0, Qt::DashDotLine));
mrk.setValue(0.5, 0.5);
mrk.setLineStyle(QwtPlotMarker::HLine);
QPixmap p2("p2.png");
mrk.setSymbol(new Symbol(p2));
mrk.attach(&myPlot);
myPlot.resize(640,480);
myPlot.show();
return a.exec();
}
To copy to clipboard, switch view to plain text mode
Built and tested Qwt 6.0.1 on Linux. Make your own p1.png and p2.png markers.
Bookmarks