我正在爲Windows Mobile 6.5編寫一個Compact Framework應用程序。該應用程序將在Windowsphone Marketplace中銷售。要做到這一點,我必須支持各種屏幕尺寸和分辨率...但我該如何做到這一點?是否有最佳做法?我主要使用標準控件,但在Mainform中使用背景圖像...我是否必須將其存儲在任何分辨率中並根據我的應用運行哪個設備動態顯示它?如何在Windows Mobile中支持不同的屏幕尺寸?
謝謝您的建議和幫助
托馬斯
我正在爲Windows Mobile 6.5編寫一個Compact Framework應用程序。該應用程序將在Windowsphone Marketplace中銷售。要做到這一點,我必須支持各種屏幕尺寸和分辨率...但我該如何做到這一點?是否有最佳做法?我主要使用標準控件,但在Mainform中使用背景圖像...我是否必須將其存儲在任何分辨率中並根據我的應用運行哪個設備動態顯示它?如何在Windows Mobile中支持不同的屏幕尺寸?
謝謝您的建議和幫助
托馬斯
我就開始說這是一個有爭議的話題。
我個人認爲你應該識別顯着不同的分辨率/尺寸範圍,並提供一個不同的UI層,當你檢測到從一個範圍到另一個範圍的調整大小時,你可以交換(動態切換可能不是你 - 在這種情況下,你只是在加載時檢查)。如果您確定的範圍非常有限並且彼此相似,那麼這種方法顯然沒有意義,因爲您的應用應該能夠適當調整大小的範圍相同。
試圖用相同的UI層解決所有可能的解決方案可能聽起來像一個好主意,但它可能是一個災難的祕訣。你可能會得到它的工作,但你很可能最終會得到一串字符串,一大堆IF-ELSE和SWITCH語句會查看像素大小,調整控件大小並移動它們。
如果您仔細考慮一下,Google地圖(對於其中一個,但想想任何iPhone應用程序)不會在移動設備和桌面瀏覽器等上提供相同的用戶界面。如果這就是我們所談論的尺寸的差異(移動VS類似桌面的分辨率),那麼您必須按照上述建議滾動不同的UI層。
聖盃是所謂的液體佈局 - WPF可以幫助這個,但因爲你在緊湊的框架,排除。
我最近問了一個非常類似的問題 - 你可以看看它here if you wanna read different opinions。
這是一個棘手的問題。以下的低努力計劃讓我獲得了合理的結果。 (這是Winform的導向,順便說一句)
最大的問題是分辨率是較小比預期。因此,儘可能小地創建屏幕,並特別注意您的錨點和底座設置。當顯示每個表單將其設置爲全屏時,錨定屬性應該以合理的方式進行合理的顯示。
如果分辨率比預期的要大得多,這隻會顯得很愚蠢。
請注意,您可以通過Screen.PrimaryScreen.Bounds調用找到當前平臺的屏幕大小。
我最近建立了一個小應用程序,只是爲了嘗試一下。我需要顯示背景圖片,所以我不能使用像Label等內置控件,因爲它們不支持透明背景。
我最終使用GDI +繪製了表單的Paint事件中的整個接口。
處理不同的屏幕分辨率結果非常簡單:接口的原型爲普通96dpi屏幕(最小),然後所有尺寸都使用96/actual_dpi計算的因子進行縮放。您可以使用找到的代碼here(有點舊,但仍在工作)檢索屏幕的實際DPI設置。然後我用模擬器提供的所有分辨率測試了應用程序,發現沒有問題。警告:我「浪費」了屏幕的下半部分,所以沒有什麼特別的地方可以解決方形屏幕和橫向/縱向的問題。
+1。嘗試通過移動和調整大小來處理代碼中的方向和分辨率更改是一場噩夢。僅僅基於查詢的屏幕分辨率就可以界面化界面並創建實現。 – ctacke 2009-11-13 19:11:49