2014-01-16 83 views
5

問題描述:是否有可能對用戶的DPI設置反應在.NET應用程序

我目前正在開發一個Visual Basic .NET應用程序。事實證明,我的應用程序在以不同於「標準」的不同dpi設置運行的系統上無法正常顯示(windows xp下100%= 96dpi)。

當我change the system's dpi settings我的GUI看起來稍微搞砸了,你可以在下面的截圖看到(因爲這是一個規模問題是不應該的問題,關於截圖的文字是德語;遺憾的這個):

Windows XP,100%比例,96 dpi - >一切看起來像我期望的。 Windows XP, 100% scale, 96 dpi

Windows XP,125%縮放,120 dpi - >窗口底部的按鈕不再適合窗口。 Windows XP, 125% scale, 120 dpi

我想達到的目標:

如果顯示比例設置爲任何大於100%,否則我想盡快在應用程序啓動用戶顯示一個警告對話框。

問:

是否有可能讀取系統的DPI值?如果是這樣,那會是怎樣呢? 似乎有一個DisplayProperties-class以及DisplayInformation-class,但據我所見,它僅適用於Windows-Store-Apps。

+2

解決方法:使用WPF,它是獨立於默認分辨率。 winforms不支持任何東西。 –

+0

@HighCore是正確的。這是WPF首先創建的原因之一 – Zache

+0

謝謝你們,我會看看WPF並考慮下一次更新。 – Christian

回答

6

Graphics類的DpiXDpiY屬性包含以下信息:

Using g = Me.CreateGraphics() 
    Dim dpiX = g.DpiX 
    Dim dpiY = g.DpiY 
End Using 

由於您使用的是Windows窗體,您可以創建一個Graphics物體Form.CreateGraphics


當然,最好的行動方針是使你的應用程序上任何 DPI設置很好看。如果你不能移動到WPF,下面的SO問題包含有關如何使這項工作用的WinForms了很多的提示:

+0

感謝Heinzi,我會盡快回家! – Christian

相關問題