我的.NET應用程序(VB.NET 3.5,如果你真的必須知道)表單在高DPI設置下渲染時不能正確格式化。到目前爲止,我發現的所有修復都只是將問題的原因解釋爲「某些UI元素無法正確縮放」。我想知道是否有人有更有意義的解釋?謝謝!爲什麼.NET winforms在大DPI設置下不能正確縮放?
7
A
回答
10
基本上問題是GDI +(以及擴展名爲Windows窗體)使用設備像素作爲其默認測量單位。當您更改DPI設置時,像素的物理尺寸實際上並未發生變化(像素是像素),但以非像素尺寸測量的字體和圖像會相應縮放。 Windows Forms試圖儘可能地適應這一點,通過爲佈局騰出更多空間,但唯一真正的解決方案是始終使用基於非像素的測量系統。這就是WPF所做的。
在WPF中,在96 DPI時,與設備無關的像素與物理像素的大小相同。但是,當您更改系統的DPI時,WPF會在全局範圍內調整虛擬座標系。應用程序,控件等都不知道它們不再與物理像素對齊。實際上,這有時會導致WPF中出現鋸齒問題,但幾乎不用擔心在不同的DPI設置中應用程序的佈局不同。
你可以做的一件事是儘量減少Windows窗體中的問題,就是使用「new」(如.NET 2.0)佈局面板,如TableLayoutPanel,FlowLayoutPanel等。儘可能使用Anchor,Dock和AutoSize。這將允許Windows窗體儘可能迴流您的UI。
還要注意,如果您在非標準DPI上創建窗體,Windows窗體將使用此作爲「基本」大小。它幾乎總是把事情搞砸。所以嘗試使用96 DPI來設計你的表格。
相關問題
- 1. DPI不能正確縮放
- 2. 爲什麼這個網站不能在smarthpone上正確縮放?
- 3. 爲什麼我的img-responsive類不能正確縮放?
- 4. 爲什麼我的圖像不能正確縮放?
- 5. 爲什麼我的ScrollView/CATiledView不能正確縮放?
- 6. 爲什麼PIL縮略圖不能正確調整大小?
- 7. 爲什麼在縮放帶有主題(text = element_text())的文本大小時,繪圖標題不能正確縮放?
- 8. 爲什麼'spdiags`不能將矢量放在正確的位置?
- 9. 谷歌地圖API fitBounds不能正確設置縮放
- 10. ListView不能正確縮放
- 11. 爲什麼upload_max_filesize不能在php.ini中正確設置?
- 12. GOPATH設置不正確,不能下載
- 13. 佈局位置不正確縮放爲不同的設備
- 14. infragistics winforms控件不能縮放
- 15. 爲什麼這些橢圓不能正確放置?
- 16. NVD3如何設置y正確縮放?
- 17. ListView動畫不能正確縮放
- 18. 爲什麼background-gradient不能縮放?
- 19. 爲什麼phonegap不能縮放html5?
- 20. CSS:爲什麼照片不能縮放?
- 21. 在混合WinForms和WPF應用程序中的.Net 3.5中進行DPI縮放
- 22. 位圖不能正確縮放AS3
- 23. 爲什麼我的GPIO引腳不能用RPi.GPIO正確設置?
- 24. 此代碼段爲什麼不能正確設置cookie?
- 25. 爲什麼IronPython不能正確設置我的Control.Text?
- 26. 爲什麼濃縮字體在FireMonkey中不能正確顯示?
- 27. 捏(縮放)手勢不正確縮放
- 28. HTML標題不能正確縮放
- 29. 以.net 2.0 WinForms應用程序編程設置DPI
- 30. 爲什麼按鈕背景縮放不正確?