Qt - QTextCursor insertImage с низким разрешением при печати в pdf

У меня есть QImage и QPainter, который рисует на этом изображении. После рисования я попытался вставить этот QImage в QTextDocument с помощью метода insertImage QTextCursor:

QImage image(width ,height,QImage::Format_RGB32);
QPainter paint;
paint.begin(&image);
paint.drawText(25,25,someText);
paint.end();
QTextCursor cursor(doc);
cursor.movePosition(QTextCursor::End);
cursor.insertImage(image);

Но после этого я получил текст с низким разрешением или провисшими пикселями ширины линии, как на этом изображении:

! ( http://imgim.com/4698inciz7774617.png) изображение линии

Я попытался установить устройство рисования макета в QTextDocument, но оно выдало ошибку из-за нулевого указателя, скорее всего, из-за того, что в документе нет макета, я пытался установить подсказки рендера рисования, но он тоже не работает. Я вставил немного html перед изображением в документе, но они хороши с точки зрения разрешения, также нет проблем с плоскими линиями. Когда я показываю этот документ в QTextEdit, это кажется нормальным, но когда это в PDF-файле в предварительном просмотре или что-то идет не так. Мой принтер определяется следующим образом:

QPrinter printer(QPrinter::HighResolution);
QPrinter highprinter(QPrinter::ScreenResolution);
printer.setPaperSize(QPrinter::A4);

И я вызываю метод печати QTextDocument для печати. У вас есть какие-то решения для этого? Спасибо

1 ответ

Решение

Вялые пиксели можно как-то устранить с помощью: QPainter::setRenderHint(QPainter::Antialiasing, true); однако кажется, что это не устраняет провисшие пиксели в письмах очень. Другой способ полного устранения провисших пикселей - это создание документа с большими размерами (разрешением) и увеличением размера изображения. После этого мы можем увеличить размер шрифта и ширину линий, что предотвращает наложение изображений, как я видел в своих испытаниях.

//increasing line width when drawing line
paint.setPen(QPen(Qt::gray,20, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin));
//increasing font's point size  when using text
qFont2.setPointSize(100);
paint.setFont(qFont2);

Однако увеличение размера шрифта не препятствует наложению, когда размер пикселя изображения (разрешение) остается тем же

Другие вопросы по тегам