[英]How can i Make my WinForms Application DPI-Aware
我在一家將Winforms應用程序作為我們旗艦產品的公司里工作。 我們最近重新設計了品牌和用戶界面。 我們注意到,表單現在無法正確顯示文本,並且某些控件未對齊或消失在邊緣。
我是否有可能在沒有時間的情況下以最少的重構次數在此應用程序上使用DPI-Aware制作表單。
不要指定像素坐標和大小,這一點很重要。 當您將控件“僅”放置在窗體上時,這將使用Control.Top
和Control.Left
來排除設計人員所做的工作。
為了獲得可以使用不同DPI設置的UI,幾乎所有內容都必須動態調整大小。 控件應啟用Control.AutoSize
。 但是僅啟用AutoSize
會完全AutoSize
您的布局,因為控件位置仍然是靜態的。
要動態定位控件,可以使用容器控件,例如FlowLayoutPanel
和TableLayoutPanel
(尺寸設置為AutoSize
)。 然后,根據自動確定的大小,其中的普通控件將僅圍繞表單移動。
如您所見,這並不簡單,需要一點經驗才能正確完成,並且需要進行大量測試(具有不同DPI設置的虛擬機效果很好)。 但我認為絕對應該這樣做,因為如果筆記本電腦上看起來有些愚蠢和有問題,我總是會感到惱火。
最快的方法是重寫OnPaint並使用Graphics.DpiX和DpiY屬性。 請參考http://msdn.microsoft.com/zh-cn/library/ms701681(VS.85).aspx,僅建議使用清單文件而不是SetDpiAware
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.