有没有一种方法可以根据绘画内容设置QImage分辨率?

时间:2019-07-15 05:30:40

标签: c++ qt qt5 qpainter qimage

我正在尝试用Qt / C ++编写一个程序,该程序从C ++代码制作基本的类图。为了显示输出,我选择使用QPainter在QImage上打印图表。但是,我无法知道提供的代码需要多少空间(宽度*高度)。 我尝试先在5000x5000 QImage上绘制图像,然后将其“缩放”到所需的尺寸,但是缩放后,无法读取QImage上的文本(也使用QPainter :: drawText绘制)。有没有一种方法可以根据需要扩展QImage,或者如果不可能的话,建议其他解决方法。

我对Qt还是很陌生,所以请尽可能地详尽。

相关代码段:

QImage temp_img(5000,5000, QImage::Format_ARGB32);
QImage final_img = temp_img.scaled(800, l_y+30,Qt::KeepAspectRatio);

l_y 是打印图表的末端高度。​​

1 个答案:

答案 0 :(得分:1)

您要执行的操作不是缩放图像,而是更改像素(通过合并几个像素来缩小像素,或通过添加像素来放大像素)。您要做的只是删除图像的一部分,也称为裁剪。换句话说,您想复制图像的一部分,而将不需要的部分留在后面。

您可以使用QImage::copy method来实现。


请注意,由于您的图像实际上是线条图(我认为),请考虑使用矢量图像格式,以便查看者可以自由缩放图像。 Qt有QSvgGenerator class可以做到这一点。