Windows 窗體中的自動縮放
借助自動縮放功能,在某臺計算機(jī)上以某種顯示分辨率或系統(tǒng)字體設(shè)計的窗體及其控件可以在其他計算機(jī)上以不同的顯示分辨率或系統(tǒng)字體適當(dāng)顯示。 它確保窗體及其控件將以智能方式調(diào)整大小,以便與本機(jī) Windows 以及用戶和其他開發(fā)人員的計算機(jī)上的其他應(yīng)用程序保持一致。 支持自動縮放和視覺樣式的 .NET Framework,使 .NET Framework 應(yīng)用程序與每個用戶的計算機(jī)上的本機(jī) Windows 應(yīng)用程序保持一致的外觀和感覺。 大多數(shù)情況下,自動縮放在 .NET Framework 版本2.0 及更高版本中按預(yù)期方式工作。 但是,字體方案更改可能會產(chǎn)生問題。 有關(guān)如何解決此問題的示例,請參閱如何:在 Windows 窗體應(yīng)用程序中響應(yīng)字體方案更改。 自動縮放的必要性若不進(jìn)行自動縮放,在分辨率或字體更改時,為某個顯示分辨率或字體設(shè)計的應(yīng)用程序?qū)@示太大或太小。 例如,如果應(yīng)用程序是使用 Tahoma 9 point 作為基準(zhǔn)而設(shè)計的,則在系統(tǒng)字體為 Tahoma 12 point 的計算機(jī)上運行時,若不進(jìn)行調(diào)整它將顯示太小。 與其他應(yīng)用程序相比,呈現(xiàn)的文本元素(如標(biāo)題、菜單、文本框內(nèi)容等)要小一些。 此外,包含文本的用戶界面 (UI) 元素(如標(biāo)題欄、菜單和很多控件)的大小均取決于所使用的字體。 在此示例中,這些元素的顯示也相對小一些。 如果應(yīng)用程序是針對某種顯示分辨率設(shè)計的,會發(fā)生類似情況。 最常見的顯示分辨率為每英寸 96 點 (DPI)(即 100% 的顯示比例),但支持 125%、150%、200%(分別等于 120、144 和 192 DPI)及以上的更高分辨率的顯示器也越來越常見。 如果不進(jìn)行調(diào)整,針對某個分辨率設(shè)計的應(yīng)用程序(特別是基于圖形的應(yīng)用程序)在其他分辨率上運行時就會顯示太大或太小。 自動縮放尋求解決這些問題,方法是更具相對字體大小或顯示分辨率自動調(diào)整窗體及其子控件的大小。 Windows 操作系統(tǒng)支持使用一種名為對話框單位的相對度量單位的自動縮放對話框。 對話框單位基于系統(tǒng)字體,并且它與像素的關(guān)系可由 Win32 SDK 函數(shù) 自動縮放的初始支持.NET Framework 的版本1.0 和1.1 支持自動縮放,這種方式依賴于 UI 使用 Windows 默認(rèn)字體(由 Win32 SDK 值DEFAULT_GUI_FONT表示)。 通常,此字體只在顯示分辨率更改時才更改。 已使用以下機(jī)制來實現(xiàn)自動縮放:
雖然此機(jī)制足夠?qū)崿F(xiàn)大多數(shù)目的時,但具有以下限制:
雖然此機(jī)制保留在 .NET Framework 版本2.0 中以保持向后兼容性,但它已被下一步所述的更可靠的縮放機(jī)制所取代。 因此,AutoScaleApplyAutoScaling、AutoScaleBaseSize 和某些 Scale 重載被標(biāo)記為“已過時”。 備注 將舊代碼升級到 .NET Framework 版本2.0 時,可以安全刪除對這些成員的引用。 當(dāng)前支持自動縮放.NET Framework 版本2.0 通過引入對 Windows 窗體自動縮放的以下更改來 surmounts 以前的限制:
注意 不支持任意混合的 DPI 和字體縮放模式。 雖然你可能成功使用某種模式(例如 DPI)縮放用戶控件并以另一種模式(字體)將其放在窗體上,但混合使用一種模式下的基窗體和其他模式下的派生窗體時可能導(dǎo)致意外結(jié)果。 操作中的自動縮放Windows 窗體現(xiàn)在使用以下邏輯自動縮放窗體及其內(nèi)容:
另請參閱 |
|
|