1. 程式人生 > >point pixel DPI

point pixel DPI

一直沒弄清過這幾個跟解析度有關的概念,直到我的膝蓋中了一箭……

因為最近要用html製作要列印的表格,開始糾結改用px還是pt作單位。最後選擇了pt,因為做這玩意就是用來列印的,1英寸72pt,絕對單位最清楚。

可是螢幕顯示的預覽頁邊距和實際列印的不一樣,問題在於,寬度究竟應該是幾何?

A4紙,寬度8.27英寸,595pt。預覽介面肯定不能用595px,px往往不等於pt。那他們之間的比例是多少?已知windows的DPI(暫以為和列印的DPI是一個概念)是96,所以1px等於0.75pt。所以介面寬度應該是793px。但是測試結果表明還是不對。由於平時用多顯示器,知道不同尺寸顯示器的畫素物理尺寸是不同的,所以螢幕顯示的尺寸對應物理尺寸應該還有一個係數。計算14英寸(水平解析度1366)的寬度為12.2英寸,對應DPI應該是112。顯然windows的96與其不吻合。看到一篇文章,說系統設定應該選取和顯示器的實際DPI最接近的值,但是系統給的幾個選項不一定是相等的,只是比較接近。於是手動調整系統DPI為112,此時預覽介面終於和A4紙一樣寬了,QPringPreviewDialog顯示比例100%時也和紙張等寬。但是這個顯示器DPI設定讓我很不適應,又改回96。此時,自制的預覽介面仍和A4紙等寬,但QPringPreviewDialog調成100%時不和紙張等寬了,要調成117%才行。112/96=117。看來windows的DPI應該從縮放比例的角度來理解,而不是絕對尺寸。只有當設定的DPI等於面板的實際DPI時,螢幕才能完全反映文件尺寸,否則很多情況下都要通過縮放來解決。

另外,明明都是A4紙的寬度,為什麼QWebView顯示的比QPringPreviewDialog要大一些?算了,反正打印出來是對的就行了

本文含有一些對事實的描述,但並未形成明確的結論,因為對這些算術問題實在是懶得糾纏……歡迎有興趣深究的朋友留言指教大笑