2

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

感谢您的建议和帮助

托马斯

4

3 回答 3

2

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

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

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

如果您考虑一下,Google 地图(对于一个,但考虑任何 iPhone 应用程序)不会在移动设备和桌面浏览器等上提供相同的 UI。如果这就是我们所说的大小差异(移动 VS 类似桌面的分辨率),那么您将不得不按照我上面的建议滚动不同的 UI 层。

圣杯是所谓的 Liquid Layout - WPF 可以对此有所帮助,但由于您使用的是已排除的紧凑框架。

我最近问了一个非常相似的问题 -如果您想阅读不同的意见,可以在这里查看

于 2009-11-13T17:51:48.373 回答
0

这是一个硬汉。通过以下省力计划,我取得了合理的结果。(这是面向Winform的,顺便说一句)

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

如果分辨率比预期大得多,这只会显得很愚蠢。
请注意,您可以通过 Screen.PrimaryScreen.Bounds 调用找到当前平台的屏幕尺寸。

于 2009-11-16T17:49:50.703 回答
0

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

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

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

警告:我“浪费”了屏幕的下部,因此不需要什么特别的东西来处理方形屏幕和横向/纵向方向。

于 2009-11-16T18:02:06.153 回答