我需要查看用户的屏幕是否设置为正常的96 dpi(小尺寸),大120 dpi字体或其他内容。我如何在VB.NET(首选)或C#中执行此操作?
答案 0 :(得分:13)
最佳方式只是让表单根据用户当前的DPI设置自动调整大小。要做到这一点,只需将AutoScaleMode
property设置为AutoScaleMode.Dpi
并启用AutoSize
属性即可。您可以从设计器中的“属性”窗口或通过代码执行此操作:
Public Sub New()
InitializeComponent()
Me.AutoScaleMode = AutoScaleMode.Dpi
Me.AutoSize = True
End Sub
或者,如果您在绘图时需要知道此信息(例如在Paint
事件处理程序方法中),则可以从DpiX
和{{{}}中提取信息。 {3}}实例的{3}}属性。
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
类的临时实例,并检查DpiX
和{{ 1}}属性,如上所示。表单类的DpiY
使这很容易做到;只需确保将此对象的创建包装在Graphics
class中以避免内存泄漏。示例代码:
DpiY
答案 1 :(得分:4)