2010-01-07 86 views
1

我有一段代碼,用於使用Nokia Qt導出透明圖像&。但是,它不起作用。我總是看到有很多噪音的黑色背景。我必須用白色填充背景,但我需要透明度,而不是白色。請提供建議。如何使用Nokia Qt C++繪製和導出透明圖像?

#include <QtGui/QApplication> 
#include <QtGui> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    { 
     QImage pix(260, 50, QImage::Format_ARGB32_Premultiplied); 

     QPainter painter(&pix); 
     painter.setBackgroundMode(Qt::TransparentMode); 
     painter.setRenderHint(QPainter::Antialiasing, true); 
     painter.setRenderHint(QPainter::TextAntialiasing, true); 
     painter.setPen(QColor(0x00, 0x00, 0x00, 0xff)); 
     painter.setBrush(QColor(0x00, 0x00, 0x00, 0xff)); 
     painter.setFont(QFont("AvantGarde Md BT", 32)); 
     painter.setBackgroundMode(Qt::TransparentMode); 

     // I don't like the white color, but I must put otherwise you'll see dumb & black background 
     painter.fillRect(0, 0, pix.width(), pix.height(), QColor(0xff, 0xff, 0xff, 0xff)); 

     QString text("My Text"); 
     QFontMetrics fm(painter.font()); 

     int w = fm.width(text); 
     int h = fm.height(); 

     painter.drawText((pix.width() - w)/2, (pix.height() + h/2)/2, text); 
     pix.save(QString("mytext.png")); 
    } 
} 

回答