有没有办法根据绘制的内容设置QImage分辨率?

Is there a way to set QImage resolution according to the Drawn Contents?

我正在尝试用 Qt/C++ 制作一个程序,它可以从 C++ 代码制作基本的 Class 图。为了显示输出,我选择使用 QPainter 在 QImage 上打印图表。但是,我无法知道所提供的代码需要多少 space (width * height)。 我尝试先在 5000x5000 QImage 上绘制图像,然后 'scale' 将其绘制到所需的尺寸,但缩放后,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为打印图结束高度

你要做的不是缩放图像,而是改变像素(通过组合几个像素来缩小,或者通过添加像素来放大)。您要做的只是删除部分图像,也称为 裁剪 图像。或者换句话说,你想复制图像的一部分,留下不需要的部分。

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


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