QPainter::drawImage 打印尺寸不同于 QImage::save 并从 Photoshop 打印
QPainter::drawImage prints different size than QImage::save and print from Photoshop
我正在缩放 QImage,目前是这样(我知道可能有更优雅的方法):
img.setDotsPerMeterX(img.dotsPerMeterX() * 2);
img.setDotsPerMeterY(img.dotsPerMeterY() * 2);
当我保存时:
img.save("c:\users\me\desktop\test.jpg");
然后从 Photoshop 打开并打印图像,正如预期的那样,它是未应用缩放的同一图像的物理尺寸的一半。
但是,当我直接从代码打印缩放后的 QImage 时:
myQPainter.drawImage(0,0,img);
图像以原始物理尺寸打印 - 未缩放为物理尺寸的一半。
我在每种情况下都使用相同的打印机;而且,据我所知,两种打印案例的设置是一致的。
我是不是误会了什么?最终目标是直接从代码成功缩放和打印缩放后的图像。
如果我们查看 setDotsPerMeterX 的文档,它指出:-
Together with dotsPerMeterY(), this number defines the intended scale and aspect ratio of the image, and determines the scale at which QPainter will draw graphics on the image. It does not change the scale or aspect ratio of the image when it is rendered on other paint devices.
我认为后一种情况是原始大小的原因是图像在调用设置每米点数的函数之前已经绘制好了。或者,在加载其内容之前,在原始图像上设置每米的点数。
相比之下,保存时,您保存到的设备似乎正在复制您为图像上的每米点数设置的值,然后绘制到该设备。
我希望创建第二个 QImage,设置它的每米点数,然后从原始图像复制到第二个图像,它会达到您正在寻找的结果。或者,您可以在将内容加载到原始 QImage 之前设置每米的点数。
我正在缩放 QImage,目前是这样(我知道可能有更优雅的方法):
img.setDotsPerMeterX(img.dotsPerMeterX() * 2);
img.setDotsPerMeterY(img.dotsPerMeterY() * 2);
当我保存时:
img.save("c:\users\me\desktop\test.jpg");
然后从 Photoshop 打开并打印图像,正如预期的那样,它是未应用缩放的同一图像的物理尺寸的一半。
但是,当我直接从代码打印缩放后的 QImage 时:
myQPainter.drawImage(0,0,img);
图像以原始物理尺寸打印 - 未缩放为物理尺寸的一半。
我在每种情况下都使用相同的打印机;而且,据我所知,两种打印案例的设置是一致的。
我是不是误会了什么?最终目标是直接从代码成功缩放和打印缩放后的图像。
如果我们查看 setDotsPerMeterX 的文档,它指出:-
Together with dotsPerMeterY(), this number defines the intended scale and aspect ratio of the image, and determines the scale at which QPainter will draw graphics on the image. It does not change the scale or aspect ratio of the image when it is rendered on other paint devices.
我认为后一种情况是原始大小的原因是图像在调用设置每米点数的函数之前已经绘制好了。或者,在加载其内容之前,在原始图像上设置每米的点数。
相比之下,保存时,您保存到的设备似乎正在复制您为图像上的每米点数设置的值,然后绘制到该设备。
我希望创建第二个 QImage,设置它的每米点数,然后从原始图像复制到第二个图像,它会达到您正在寻找的结果。或者,您可以在将内容加载到原始 QImage 之前设置每米的点数。