2011-11-30 503 views
1

我正在一个项目中工作,我正在以.eps格式保存图形。如何在Qt4.7中将像素转换为毫米?

绘图本身在一个小部件上,我需要将小部件的大小从像素转换为毫米,以便我可以正确设置输出图片的大小。

这是我使用的代码:

int widthmm = QApplication::desktop()->widthMM(); 
int heightmm = QApplication::desktop()->heightMM(); 
int widthpx = QApplication::desktop()->width(); 
int heightpx = QApplication::desktop()->height(); 
QSize epsPictureSize; 
epsPictureSize.setWidth((picture.width*widthmm)/widthpx); 
epsPictureSize.setHeight((picture.height*heightmm)/heightpx); 
epsPrinter.setPaperSize(epsPictureSize,QPrinter::Millimeter); 

的问题是,widthMMheightMM是不可靠的,并给错误的结果。

我需要一个跨平台的解决方案来正确地获取物理测量结果。

+1

我不认为有任何跨平台的屏幕度量功能。你可能需要依赖Qt(这显然失败)或者编写平台级代码(Win32,X11,Mac)。 – rubenvb

+1

正如文档所言:“由于平台限制,可能无法使用此功能来确定屏幕上小部件的实际物理大小。”所以我认为你在那里运气不好。你可能会更好地决定什么是规模,而不是依赖屏幕房地产的一些衡量标准。 – Bart

+0

rubenvb:也许,但我会把它作为最后的手段。 Bart:我正在考虑制定具体的比例尺(比如100x100 MM)并在其上绘制图像。问题是想像我有一个大小的图像(80x40像素),(规则)缩小和绘制这样的图像将使它占据只有一半的空间...但是,我不认为我会任意大小,这可能会使我采用这种方法...我仍然接受其他建议。非常感谢 –

回答

1

这些功能要求窗口管理系统,这通常是不确定的。 如果你只是想要可爱的GUI,学习使用布局管理器。如果你必须在屏幕上显示绝对尺寸(我有),你应该做校准。显示一条线,让用户调整它的大小,直到它恰好等于5厘米。

+1

这不是布局经理的问题!如果仔细阅读我的问题,我将生成一个.eps图像,这是一个矢量图像,并且没有“绝对”大小的矢量图像。 问题是指定图像在MM中需要多少空间(宽度x高度)才能裁剪任何东西!要做到这一点,我需要一种方法将我的像素转换为MM,然后为缩放执行一些视口转换。我希望我现在明白我的自我。 感谢您的建议,但 –