CompositionMode_Clear给了我一个黑色矩形

时间:2016-05-27 22:03:18

标签: c++ qt qt4 qpixmap

我试图使用paintEvent中的Qt绘制一个中心透明的圆圈。

我有这段代码:

void CircleWidget::paintEvent(QPaintEvent * event)
{
    QPainter painter;
    QPixmap pix1(width(), height());
    QPixmap pix2(width()/2, height()/2);

    QBitmap mask1(pix1.size());
    QBitmap mask2(pix2.size());
    mask1.fill(Qt::color0);
    mask2.fill(Qt::color0);
    pix1.setMask(mask1);
    pix2.setMask(mask2);

    if (painter.begin(&pix1))
    {
        painter.setPen(Qt::NoPen);
        painter.setRenderHint(QPainter::Antialiasing);
        painter.setBrush(QBrush(QColor(0xff, 0x0, 0x0)));
        painter.drawEllipse(0, 0, width(), height());
        painter.end();

        if (painter.begin(&pix2))
        {
            painter.setPen(Qt::NoPen);
            painter.setRenderHint(QPainter::Antialiasing);
            painter.setBrush(QBrush(QColor(0x0, 0xff, 0xff)));
            painter.drawEllipse(0, 0, width()/2, height()/2);
            painter.end();

            if (painter.begin(this))
            {
                painter.drawPixmap(0, 0, pix1);
                painter.setCompositionMode(QPainter::CompositionMode_Clear);
                painter.drawPixmap(width()/4, height()/4, pix2);
                painter.end();
            }
        }
    }
}

但结果如下:

enter image description here

你知道吗?非常感谢。

0 个答案:

没有答案