我的主要窗口有以下抽獎功能:文物到一個QWidget
void MainWindow::paintEvent(QPaintEvent*)
{
QImage sign(50, 50, QImage::Format_ARGB32_Premultiplied);
QPainter p(&sign);
p.setRenderHint(QPainter::Antialiasing, true);
p.fillRect(sign.rect(), QColor(255, 255, 255, 0));
p.setBrush(Qt::blue);
p.setPen(Qt::NoPen);
p.drawEllipse(0, 0, sign.width(), sign.height());
p.end();
QPainter painter(this);
painter.drawImage(rect(), sign, sign.rect());
}
因此,基本上,它繪製一個藍色的實心圓到QImage的,比繪製一條QImage的到小部件。但是,當我調整窗口的大小時,會出現奇怪的人爲現象(位於左上角)。這是什麼樣子:
原:
有沒有人有一個想法,爲什麼是這樣的:
改變窗口大小後?
(我的Ubuntu 10.04下工作,如果是的利息)
非常感謝你,是沒有的伎倆! :)我假設「p.fillRect(sign.rect(),QColor(255,255,255,0));」會做「初始化」,因爲它會用一種顏色填充完整的QImage。然而,一旦我插入「fill()」調用,工件就會消失。不過,我不確定我是否理解了爲什麼。不過,非常感謝您的回答! :) – Tom 2010-09-12 06:23:40
我相信問題是,具有指定顏色和透明度的p.fillRect()正在用指定的透明度值調整的顏色填充矩形。它實際上並不改變保留其隨機未初始化值的圖像的alpha通道。這只是一個猜測。 – 2010-09-12 16:59:25