2016-07-02 20 views
2

Ich möchte Text auf einem Bild zeichnen. Ich benutze diesen Code, aber ich sehe keinen Text auf dem Bild.Zeichnen Sie Text auf Bild mit Qt

void ImageSaver::save(const QString &path) const {  
    QImage image(img_); 
    QPainter p(&image); 
    p.setPen(QPen(Qt::red)); 
    p.setFont(QFont("Times", 12, QFont::Bold)); 
    p.drawText(image.rect(), Qt::AlignCenter, "Text"); 
    image.save(path); 
} 
+0

Sie müssten das Bild nach dem Hinzufügen des Textes erneut anzeigen oder speichern oder den Code neu strukturieren, um den Text zu zeichnen, und das Bild speichern. Jetzt speichern Sie es, bevor etwas geändert wird. –

+0

Ich bearbeite Code, aber es war nutzlos. – neda

+0

Achten Sie genau darauf, welches Bild Sie dem Maler übergeben und welches Sie speichern. Sie stimmen nicht überein. –

Antwort

1

QPainter müssen die I/O-Operationen beenden, bevor das Bild gültig ist. Sie können es entweder tun nachQPainter Objekt Zerstörung oder verwenden Sie die begin/end Methoden.

bool ImageSaver::save(const QString &path) const {  
    QImage image(img_); 
    QPainter p; 
    if (!p.begin(&image)) return false; 

    p.setPen(QPen(Qt::red)); 
    p.setFont(QFont("Times", 12, QFont::Bold)); 
    p.drawText(image.rect(), Qt::AlignCenter, "Text"); 
    p.end(); 

    return image.save(path); 
} 

P. S .: Ich habe die bool Rückkehr für eine bessere Fehlerverfolgung hinzugefügt.