美文网首页
QPainter合成模式示例

QPainter合成模式示例

作者: NullUser | 来源:发表于2024-11-26 11:32 被阅读0次

QPainter::CompositionMode
在控件上画两条有透明度的交叉线,展示线重叠部分的颜色效果。
线的颜色rgba为(0, 255, 0, 100),即半透明绿色。
代码:

#include <QApplication>
#include <QWidget>
#include <QPainter>
class CompositionWgt : public QWidget
{
public:
    int mMode;
    void paintEvent(QPaintEvent *e) override
    {
        QPen pen;
        pen.setColor(QColor(0,255,0,100));
        pen.setWidth(20);
        QPainter painter(this);
        painter.setPen(pen);
        painter.setCompositionMode((QPainter::CompositionMode)mMode);
        painter.drawLine(0,0,200,200);
        painter.drawLine(200,0,0,200);
    }
};

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    int posx = 0, posy = 0;
    for(int i = 0; i <= 37; i++)
    {
        CompositionWgt *wgt = new CompositionWgt;
        wgt->setWindowTitle(QString::number(i));
        wgt->mMode = i;
        wgt->move(posx, posy);
        wgt->resize(200, 200);
        wgt->show();

        posx += 200;
        if(posx > 1700)
        {
            posx = 0;
            posy += 200;
        }
    }

    return app.exec();
}

效果:


image.png

相关文章

网友评论

      本文标题:QPainter合成模式示例

      本文链接:https://www.haomeiwen.com/subject/jnofsjtx.html