2016-12-07 49 views
3

第47頁書使用MFC編程(第二版)由Jeff Prosise(第2章:繪製在窗口中)具有以下聲明。什麼是具有公制映射模式,如MM_LOMETRIC和MM_LOENGLISH點?

使用公制映射模式時要記住的一件事是,在顯示屏幕上,1個邏輯英寸通常不等於1個物理英寸。換句話說,如果您在MM_LOENGLISH映射模式下繪製一條長度爲100個單位的線,該線可能不會完全是1英寸長。

我的問題是,如果窗口不能保證我們使用度量映射模式繪製的物體的物理尺寸,那麼擁有這種映射模式有什麼意義呢?度量標準映射模式是否僅與打印機相關,並且與顯示器完全無關?

在具有數字端口(如HDMI/Display端口)的現代顯示器中,Windows OS無法獲得屏幕的物理尺寸,因此可以使用公制尺寸(英寸而不是像素)繪製物體,請注意電流監視器的分辨率已經被操作系統知道了)?

+2

它們* *主要相關的非顯示輸出設備,包括打印機,繪圖儀等,但是,它們可以* *是用於顯示器是有用的。 MFC使用它來實現打印預覽等功能。是的,使用現代顯示器,Windows可能會更好地做某些事情,但是由於時間機器還沒有開發出來,他們不能回頭去改變大約20多年前開發的GDI子系統的語義。 –

+1

視頻驅動程序在監視器分辨率方面有很長的歷史。從他們開始只是沒有任何想法,因爲與顯示器的電氣連接不夠好。被鎖定到96 dpi,這很難改變,因爲幾乎每個程序員都認爲它是默認值,並且不會編寫縮放代碼。這一直在改變,這不能用4k顯示器來實現,DPI虛擬化變得太難看了。特別是Win10不再使用這個默認的,很多很多的問題。 –

回答

0

一個背後的邏輯英寸的思想是將監視器觀看距離是典型地比對打印頁的距離大,所以這是有意義的具有典型的監視器上的邏輯英寸的缺省是有點大而不是物理的寸,尤其是在所見即所得的時代。而不是把所有的負擔,調整應用設備的分辨率,邏輯英寸讓所見即所得的應用程序開發者認爲,在打印頁上的距離和大小方面,而不是在其中差別很大,從設備到設備的像素或點工作(尤其是從顯示器到打印機)。

的另一個問題是,早期監測的相對有限的分辨率,它僅僅是不切合實際顯示清晰的文字小如通常的印刷文字。例如,文本通常以每英寸6行打印。在典型的顯示器分辨率下,這可能意味着每行有12個像素,這實際上限制了字體設計和易讀性(特別是在抗鋸齒和亞像素渲染文本實用之前)。使邏輯英寸默認爲實際英寸的120-130%(在該時代的典型顯示器上)意味着文本行的高度爲16像素,使得襯線和斜體等印刷細節更加穩定(儘管仍然不太漂亮)。

另外請記住,用戶控制邏輯英寸,並可以很好地設置邏輯英寸,以便它符合物理英寸,如果這符合他們的需要。

邏輯單元今天仍然是有用的,即使顯示器有接近那些舊的激光打印機的分辨率。考慮爲演示文稿設計幻燈片,這些幻燈片將被投影並打印爲講義。投影尺寸是投影機光學系統及其與屏幕距離的函數。即使操作系統和操作系統的顯示設備之間進行了雙向通信,也無法確定實際的物理尺寸(對大多數應用程序也不會有用)。

我不是CSS專家,但我的理解是,即使在使用CSS的px單位工作時,您也在使用邏輯單位,其大小可能不是物理像素的大小。它應該考慮到設備的實際分辨率和典型的觀看距離,使得網頁設計師可以做出與原生應用開發人員一直使用的每英寸96英寸相同的假設。