Как нарисовать и экспортировать прозрачное изображение с помощью Nokia Qt C ++? - PullRequest
1 голос
/ 07 января 2010

У меня есть фрагмент кода, предназначенный для рисования и экспорта прозрачного изображения с помощью Nokia Qt. Однако это не работает. Я всегда вижу черный фон с большим количеством шума. Я должен залить фон белым цветом, но я хочу прозрачность, а не белый цвет. Пожалуйста, сообщите.

#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"));
    }
}

1 Ответ

4 голосов
/ 07 января 2010

Я нашел ответ сам:

Мне просто нужно добавить одну магическую строку сразу после объявления пикселя:

pix.fill(Qt::transparent);

Ссылки:

http://techbase.kde.org/Development/Tutorials/Graphics/Performance

http://www.informit.com/articles/article.aspx?p=1174421&seqNum=3

...