2011-11-30 504 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,然後爲縮放執行一些視口轉換。我希望我現在明白我的自我。 感謝您的建議,但 –