Dot-Net
如何檢測使用者的字型 (DPI) 是否設置為小、大或其他?
我需要確定使用者的螢幕是否設置為普通 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提取資訊。DpiXDpiYGraphicsPrivate 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為您的表單創建該類的臨時實例,並檢查DpiX和DpiY屬性,如上所示。表單類的CreateGraphics方法使這很容易做到;只需確保將此對象的創建包裝在一個Using語句中以避免記憶體洩漏。範常式式碼:Dim dpiX As Single Dim dpiY As Single Using g As Graphics = myForm.CreateGraphics() dpiX = g.DpiX dpiY = g.DpiY End Using