我的.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. 爲什麼我的ScrollView/CATiledView不能正確縮放?
- 3. 爲什麼我的img-responsive類不能正確縮放?
- 4. 爲什麼我的圖像不能正確縮放?
- 5. 爲什麼PIL縮略圖不能正確調整大小?
- 6. 爲什麼'spdiags`不能將矢量放在正確的位置?
- 7. 谷歌地圖API fitBounds不能正確設置縮放
- 8. GOPATH設置不正確,不能下載
- 9. 爲什麼upload_max_filesize不能在php.ini中正確設置?
- 10. 佈局位置不正確縮放爲不同的設備
- 11. 爲什麼這些橢圓不能正確放置?
- 12. 爲什麼background-gradient不能縮放?
- 13. 爲什麼我的GPIO引腳不能用RPi.GPIO正確設置?
- 14. 捏(縮放)手勢不正確縮放
- 15. WebView內容不能正確縮放
- 16. 以.net 2.0 WinForms應用程序編程設置DPI
- 17. Android圖像不能正確縮放
- 18. Drupal,ImageCache模塊不能正確縮放
- 19. jquery ui不能正確縮放文本!
- 20. 爲iOS圖表設置最大縮放
- 21. Android圖標不能正確縮放
- 22. HighCharts - 2nd yAxis圖不能正確縮放
- 23. CSS:圖像不能正確縮放
- 24. 背景大小:包含;高度不能正確縮放
- 25. Google Maps API enableScrollWheelZoom() - 爲什麼它不能正確縮小?
- 26. 爲什麼Vim不能正確縮進C風格的註釋?
- 27. 圖像縮放不正確
- 28. 爲什麼DIV位置不正確設置
- 29. 按鈕位置不能正確放置
- 30. 在UITextField下放置一條線的正確方法是什麼