首页 > 解决方案 > 隐藏自定义 QwtSymbol 的边界矩形

问题描述

我有一个派生自 QwtSymbol 的类,符号类型是 pixmap。在像素图上,我画了一个省略号,但是,当带有自定义符号的曲线与另一条曲线(带有标准符号)发生碰撞时,自定义符号会剪切另一条曲线的符号区域。

自定义符号仅在与边界矩形碰撞的地方剪辑其他符号。

CSymbol::CSymbol()
    : QwtSymbol(QwtSymbol::Pixmap)
    , ellipsis(142, 142, 142)
{
    QPixmap pixmap(QIcon(":/App/Resources/Ellipsis.png").pixmap(QSize(12, 12)));
    QPainter* painter = new QPainter(&pixmap);
    QwtPainter qwtPainter;

    QPen pen(ellipsis);
    pen.setWidth(1);

    painter->setRenderHint(QPainter::Antialiasing);
    painter->setClipping(false);
    painter->setPen(pen);
    auto size = QRectF(1, 1, 10, 10);
    qwtPainter.drawEllipse(painter, size);
        painter->end();
    setPixmap(pixmap);
    setPinPoint(QPoint(0, 0), true);

如何隐藏自定义符号的边界矩形,使其不会夹住覆盖的东西?

标签: c++qtqwt

解决方案


解决方案非常简单,我刚刚对输入像素图应用了 alpha 混合,然后绘制了省略号。


推荐阅读