2016-07-02 5 views
2

Я хочу нарисовать текст на изображении. Я использую этот код, но я не вижу никакого текста на изображении.Текст на картинке с помощью 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

Вам нужно будет отобразить или сохранить изображение снова после добавления текста или изменить структуру кода, чтобы нарисовать текст, затем сохраните изображение. Теперь вы сохраняете его, прежде чем что-либо изменится. –

+0

Я редактирую код, но это бесполезно. – neda

+0

Обращайте внимание на изображение, которое вы передаете художнику и которое вы сохраняете. Они не совпадают. –

ответ

1

QPainter должен закончить операции ввода/вывода до того, как изображение является действительным. Вы можете либо сделать это послеQPainter уничтожить объект или использовать методы begin/end.

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 .: Я добавил bool возвращение для лучшего отслеживания ошибок.