2012-09-12 50 views
5

與我目前的顯示器,我更喜歡每英寸120像素DPI設置(哪些窗口暗示爲默認值)。但是,在設計表格後,通常會在不使用每英寸120像素的系統上錯誤地佈局。使用WinForms設計器時,我是否總是需要將DPI設置爲96?

我想知道,是否有必要將我的顯示設置設置爲每英寸96像素,因爲每當我使用設計器時?

另外,其他開發者有不同的DPI時也會遇到一些問題。他們在設計師中打開一個表單並移動文本編輯控件之類的東西,並突然發現它也會自動調整自己的大小。然後,有一個與其他控件大小不同的控件,我們陷入了一團糟。

P.S.我已閱讀相關帖子。他們都很有趣,但沒有回答我的問題。

How to control the font DPI in .NET WinForms app

C# WinForms disable DPI scaling

WinForms Different DPI Layouts

DPI not scaling properly

Visual Studio and DPI issue

+0

無論如何,請通過不斷更改DPI來弄清楚如何進行佈局。在您發貨後這肯定會發生。如果你喜歡把頭伸進沙子裏,你只會考慮將它保持在一定的數值​​。 –

+0

我確實改變了DPI以測試具有不同設置的佈局。但是......使用設計師時,我應該堅持使用一個DPI嗎?看起來,如果設計師使用不同的DPI設置,則每次編輯具有不同DPI的表單時,它都會重新佈局控件,巧妙地移動它們意味着難以獲得一致的結果。 EEE。也許我已經回答了我自己的問題。在使用設計師時,我可能會堅持使用一個DPI。我只是有點想知道其他人是否已經這樣做,或者有其他方法。 –

回答

1

我不認爲你的DPI設置永久爲不同的值會幫助你。問題在於,當您更改dpi時存在問題,即您的表單佈局無法處理不同的dpi。

我沒有一個絕對的解決方案,除了你應該測試不同的dpis,看看它是否會產生表單顯示的問題。找出導致問題的原因並不困難,並且您將學會如何快速避免。

+1

我一直在做WinForm開發一段時間,但我還沒有學會如何避免。 :) –

+0

我在說的是,如果您使用不同的dpi進行測試,您很快就可以讓您的表單更好地處理不同的dpi設置。 – kristianp

4

不需要在使用WinForms設計器時始終將DPI設置爲96。

如果將AutoScaleMode屬性設置爲Dpi,那麼設計器會將當前系統Dpi寫入窗體的AutoScaleDimensions屬性的designer.cs文件中。當設計人員在具有不同Dpi的系統上使用時,此信息將用於重新縮放表格,設計人員可用於不同的Dpi。

當我嘗試其他縮放模式時,這似乎不能很好地工作。 'None'意味着控件在運行時不會縮放,'Font'似乎受到舍入錯誤的影響,並且當顯示設置Dpi改變時,控件大小可能會稍微改變,從而導致錯誤。

我還發現,對於添加到窗體的用戶控件,最好將他們的AutoScaleMode設置爲Inherit。如果您使用Dpi,則其上的控件會重新縮放兩次,最終會錯誤地佈局。


我想出了上述指南的實驗和互聯網搜索的幾個小時,我發現了以下兩篇文章後:

http://msdn.microsoft.com/en-us/library/ms229605.aspx

和:

http://kbalertz.com/967578/Child-controls-UserControl-clipped-system-lower.aspx

相關問題