2010-11-25 123 views
3

我正在Windows Vista上使用VS2008開發Windows Forms應用程序。我試圖在Windows XP上運行我的應用程序,GUI上的所有內容都搞亂了。我意識到我在Windows Vista上開發了使用120 Dpi設置的應用程序,並將我的XP設置爲96 dpi。Visual Studio和DPI問題

我的應用程序有幾個UserControls,如果我將DPI更改爲96,它們即使在Visual Studio本身中也會縮小。我相信很多人在最近的DPI中使用Visual Studio。那麼如何確保我的GUI在Visual Studio和運行時都不會搞砸?

編輯:我讀過幾篇關於這個問題的文章,並且我瞭解到我應該將AutoScaleMode設置爲None。但是,這仍然無法阻止我的標籤修改操作系統強制執行的新DPI設置。我需要一種方法來防止我的標籤增長/縮小,因爲其他GUI元素具有修復大小。

回答

0

我從事這個問題已經有一段時間了,但嘗試設置AutoSize = False。另外,UseCompatibleTextRendering = True可能會有所幫助。

0

這是一個相當古老的問題,但我想分享我的解決方案/意見。最近我遇到了類似的問題。實際上,我希望Visual Studio保留我的WinForms,但它們要在運行時進行縮放。我發現沒有一致的總結如何正確地做到這一點。經過一些閱讀和試驗後,我來到這個解決方案:

  • 保留表格的AutoScaleMode = Font
  • 設置你的窗體設計器:Font = MS Sans; 11px
  • 在窗體構造函數,InitializeComponent後,設置:Font = SystemFonts.DefaultFont
  • 啓用DPI意識,無論是通過清單或通過API函數SetProcessDPIAwareness

由於AutoScaleMode遺體主動的,所有DPI改變的魔術作品,甚至是監視DPI的意識。還有一點,就是用一種可以很好地縮放的方式來設計Forms。

我在博客上寫了詳細信息:http://www.sgrottel.de/?p=1581&lang=en