有没有办法根据绘制的内容设置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 可以做到这一点。
我正在尝试用 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 可以做到这一点。