如何在Windows Mobile中支持不同的屏幕尺寸?

时间:2009-11-13 17:36:31

标签: c# windows-mobile compact-framework marketplace

我正在为Windows Mobile 6.5编写Compact Framework应用程序。该应用程序将在Windowsphone Marketplace中出售。为此,我必须支持各种屏幕尺寸和分辨率......但我该怎么做?有最佳做法吗?我主要使用标准控件但在Mainform中使用背景图像...我是否必须以任何分辨率存储它并动态显示它,具体取决于我的应用程序运行的设备?

感谢您的建议和帮助

托马斯

3 个答案:

答案 0 :(得分:3)

我会开始说这是一个有争议的话题。

我个人认为,您应该识别出明显不同的分辨率/尺寸范围,并提供一个不同的UI层,当您检测到从一个范围到另一个范围的调整大小时,您可以交换它们(动态切换可能甚至不是您的要求 - 在这种情况下,你只需在加载时检查)。如果您识别的范围非常有限并且彼此相似,那么这种方法显然没有意义,因为在相同的范围内,您的应用应该能够适当地调整大小。

尝试使用相同的UI层解决所有可能的分辨率可能听起来像一个好主意,但它可能是灾难的一个秘诀。你可能会让它工作,但是你很可能最终得到一个字符串球,一堆IF-ELSE和SWITCH语句查看像素大小,调整控件大小和移动东西。

如果你考虑一下,谷歌地图(一个,但想想任何iPhone应用程序)不能在移动设备和桌面浏览器上提供相同的用户界面等等。如果这是我们谈论的大小差异(移动VS类似桌面的分辨率),那么你将不得不按照我上面的建议滚动不同的UI层。

圣杯是所谓的液体布局 - WPF可以帮助解决这个问题,但是因为你处于一个被排除在外的紧凑框架上。

我最近问过一个非常相似的问题 - 你可以看一下here if you wanna read different opinions

答案 1 :(得分:1)

这是一个艰难的过程。我通过以下低成本计划获得了合理的结果。 (这是面向Winform的,顺便说一句)

最大的问题是小于的分辨率低于预期。因此,尽可能小地创建屏幕,并特别注意您的锚点和对接设置。当显示每个表单时,将其设置为全屏,锚定属性应该以合理的方式显示事物。

如果分辨率远大于预期,这只会开始变得愚蠢 请注意,您可以通过Screen.PrimaryScreen.Bounds调用找到当前平台的屏幕大小。

答案 2 :(得分:1)

我最近建立了一个小应用程序,只是为了尝试。我需要显示背景图像,所以我不能使用像Label这样的内置控件,因为它们不支持透明背景。

我最终使用GDI +在表单的Paint事件中绘制整个界面。

处理不同的屏幕分辨率非常简单:界面是原型的常规96dpi屏幕(最小的),然后使用计算为96 / actual_dpi的因子缩放所有尺寸。您可以使用找到的代码here检索屏幕的实际DPI设置(有点旧但仍然有效)。然后,我使用模拟器提供的所有分辨率测试了应用程序,发现没有问题。

警告:我“浪费”了屏幕的下半部分,因此无需特别处理方形屏幕和横向/纵向方向。