2010-11-02 103 views
6

我有一個項目從2008年開發的.NET 1.1轉換爲3.5。我可以告訴Visual Studio不要更改項目的DPI嗎?

如果我在Windows 7上打開項目,它會將所有東西的大小轉換爲120dpi大小。如果我用96 dpi打開它,它會變回。有沒有什麼辦法讓我開發,所以它看起來不錯,而且不是有Visual Studio更改大小,如果在不同的DPI系統上打開?

這個問題也許是更好的措辭/複製在這裏: visual studio designer dpi setting

或者在這裏: Visual Studio and DPI issue

需要明確的是什麼,我要做的是阻止時,被調整在設計控制由多個開發人員使用不同的DPI設置。在我注意到這個問題的所有情況下,我一直在使用.NET 1或.NET 2項目升級到最初使用Visual Studio 2008,現在是Visual Studio 2010.

更新(如果有人想要與@Ben競爭獎勵積分):我有一個窗體可以正確調整窗體大小,但窗體大小會以編程方式更改。由於設計人員不知道這些尺寸,因此如果使用不同DPI的開發人員觸摸該窗體,該窗口的大小將錯誤調整。有沒有辦法解決這個問題,而不是在運行時不縮放UI?

比如:我有兩個尺寸爲我的窗口宣佈,如果開發者使用在設計時120 dpi的其中正常工作:

private static Size smallSize = new Size(960, 500); 
private static Size largeSize = new Size(960, 615); 

我只是想環繞什麼,我需要我的頭如果有人在96dpi設計師編輯表單,不要有可怕的設計迴歸。

+0

我沒有檢查,但有一個兼容模式在Windows 7的應用程序。您可以嘗試修改設置。 – PradeepGB 2010-11-02 09:59:40

回答

8
+0

我的理解是,設置會改變控件在構建的應用程序中的大小調整方式。我正試圖做的是防止設計師在使用具有不同DPI設置的多個開發人員時調整控件的大小。 – 2011-07-12 02:38:01

+0

嗯,這確實有用,但並不理想。 – 2011-07-12 02:57:38

+0

@mootinator:如果你仍然需要運行時調整行爲(但是如果它在設計時會破壞你的佈局,那麼在運行時會同樣糟糕),一些開發人員選擇在構造函數中遍歷'Controls'集合在調用設計器生成的代碼之後)並將'AutoSizeMode'更改爲所需的運行時設置。這種方式對設計師來說是不可見的,因此不會混淆你的佈局。 – 2011-07-12 03:37:36

0

因爲我遇到了同樣的問題,最近,我想分享我的解決方法。

第一張:KEEPAutoScaleMode = Font!這將在運行時很好地工作,以使您的應用程序能夠識別DPI。 (即使每臺顯示器都很酷的DPI Aware)。

但是,Visual Studio中的WinForms Designer實際上是根據系統的DPI評估字體大小,並因此在它認爲有必要時重新調整大小。這是問題的核心。由於字體通常在「點」中指定它們的大小(以提供與DPI無關的用戶體驗),因此會觸發此評估。

我的解決方法是改變這種設計時間:

  • 設置你的窗體設計器:Font = MS Sans; 11px。這基本上是OS默認字體,但是用像素大小指定。所以沒有設計時間重新縮放會發生。
  • 現在,要在運行時返回High-DPI自適應,請將字體改回爲使用point中指定的大小。例如。 Font = SystemFonts.DefaultInitializeComponents之後,Ctor就是一個好地方。

我寫我的博客上關於我的解決方法的詳細信息:http://www.sgrottel.de/?p=1581&lang=en

相關問題