qwt 实现空心矩形mark
时间: 2023-12-10 08:41:24 浏览: 164
QT通过qwt实现曲线动态显示
使用 Qwt 绘制空心矩形 Mark 需要自定义一个 QwtPlotMarker 类。可以继承 QwtPlotMarker 类,重写 draw() 函数,实现自己的绘制逻辑。
以下是一个简单的示例代码,用于绘制空心矩形 Mark:
```cpp
class HollowRectMarker : public QwtPlotMarker
{
public:
HollowRectMarker(const QColor &color, int width, int height) : QwtPlotMarker()
{
setLineStyle(QwtPlotMarker::NoLine);
setSymbol(new QwtSymbol(QwtSymbol::Rect, QBrush(Qt::white), QPen(color), QSize(width, height)));
}
virtual void draw(QPainter *painter, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect) const override
{
const QPointF center = QPointF(xMap.transform(x()), yMap.transform(y()));
const QSizeF size = symbol()->size();
painter->save();
painter->setPen(symbol()->pen());
painter->setBrush(Qt::NoBrush);
painter->drawRect(QRectF(center - QPointF(size.width() / 2, size.height() / 2), size));
painter->restore();
}
};
```
在使用时,可以创建 HollowRectMarker 类的实例,并添加到 QwtPlot 控件中:
```cpp
HollowRectMarker *marker = new HollowRectMarker(Qt::red, 50, 50);
marker->setValue(1.0, 2.0);
marker->attach(plot);
```
这样就可以在 QwtPlot 控件中绘制一个大小为 50x50 的空心矩形 Mark,颜色为红色,位置为 (1.0, 2.0)。
阅读全文