Dot-Net

如何檢測使用者的字型 (DPI) 是否設置為小、大或其他?

  • May 21, 2011

我需要確定使用者的螢幕是否設置為普通 96 dpi(小尺寸)、120 dpi 大字型或其他。如何在 VB.NET(首選)或 C# 中做到這一點?

最好的方法就是讓表單根據使用者目前的 DPI 設置自動調整大小。為此,只需將AutoScaleMode屬性設置為AutoScaleMode.Dpi並啟用該AutoSize屬性。您可以從設計器中的“屬性”視窗或通過程式碼執行此操作:

Public Sub New()
   InitializeComponent()

   Me.AutoScaleMode = AutoScaleMode.Dpi
   Me.AutoSize = True
End Sub

或者,如果您在繪製時需要知道這些資訊(例如在事件處理程序方法中),您可以從實例的和屬性中Paint提取資訊。DpiXDpiYGraphics

Private Sub myControl_Paint(ByVal sender As Object, ByVal e As PaintEventArgs)
   Dim dpiX As Single = e.Graphics.DpiX
   Dim dpiY As Single = e.Graphics.DpiY

   ' Do your drawing here
   ' ...
End Sub

最後,如果您需要即時確定 DPI 級別,則必須Graphics為您的表單創建該類的臨時實例,並檢查DpiXDpiY屬性,如上所示。表單類的CreateGraphics方法使這很容易做到;只需確保將此對象的創建包裝在一個Using語句中以避免記憶體洩漏。範常式式碼:

Dim dpiX As Single
Dim dpiY As Single

Using g As Graphics = myForm.CreateGraphics()
   dpiX = g.DpiX
   dpiY = g.DpiY
End Using

引用自:https://stackoverflow.com/questions/6082733