1

我有一个 QImage 和一个在这个图像上绘画的 QPainter。绘画后,我尝试使用 QTextCursor 的 insertImage 方法将此 QImage 插入到 QTextDocument:

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 的 print 方法进行打印。您对此有什么解决方案吗?谢谢

4

1 回答 1

0

下垂的像素可以通过以下方式消除: 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);

但是,当图像的像素大小(分辨率)保持不变时,增加字体点大小并不能防止出现锯齿

于 2014-08-01T09:35:19.463 回答