我目前使用的是 4K (3840x2160) 28 英寸(631.93 毫米 x 359.78 毫米)60Hz IPS 顯示幕,根據制造商的說法,每英寸像素 (DPI/PPI) 值應為 157.35。
但是,當我使用 GetDeviceCaps 函式時,它回傳 144。由于我對這個主題不是很熟悉,如果有人可以解釋差異的來源,我將不勝感激。最后但并非最不重要的是,有沒有辦法正確計算我的 PPI?
Declare PtrSafe Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal Index As Long) As Long
Public Function returnDPI()
Dim hDC As Long
hDC = GetDC(0)
MsgBox GetDeviceCaps(hDC, 88)
MsgBox GetDeviceCaps(hDC, 90)
End Function
uj5u.com熱心網友回復:
TLDR:你不是在測量你認為你在測量的東西;
88 和 90 是每英寸的邏輯像素(請參閱此列舉和 GetDeviceCaps 的檔案):


請注意,這些 LongPtr 型別在 7 之前的 VBA 版本上會出錯,您需要進行條件編譯。我沒有包括它,因為這應該適用于 2010 ,并且已經有大量資源可以支持舊版本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364366.html
