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