windows mobile 自适应分辨率

原文参见 : http://msdn.microsoft.com/zh-cn/magazine/dvdarchive/cc546609.aspx

 

节选部分:

 

适用于本机应用程序的分辨率感知
Windows Mobile 6 SDK 为使用本机代码编写分辨率感知应用程序提供了两种主要资源:UILayout 示例中的可重用 ScreenLib 类和 DeviceResolutionAware.h 标头。UILayout 示例可在 Windows Mobile SDK 的 /Samples/Common/CPP/Win32 目录中找到。DeviceResolutionAware.h 安装在 Microsoft ® Visual Studio ® 安装目录的 /VC/ce/atlmfc/include 目录下。
ScreenLib 提供了一组帮助函数,用于对齐屏幕上的元素。例如,您可以使用 DockControl 函数将给定控件停靠到屏幕某个边缘或所有四个边缘来填充客户端区域。OptimizeWidth 和 OptimizeHeight 函数将某个控件(或多个控件 — 对于 OptimizeWidth 函数)与显示器对齐并调整其大小,左右或上下分别留出一小块边距。提供的其他函数可用于对齐控件和将一组控件调整为相同大小。在这些函数中,当大量使用基于窗体的应用程序时,ScreenLib 可能最有用。
DeviceResolutionAware.h 弥补了 ScreenLib 的不足,并提供了有助于构建更复杂的自适应应用程序的 20 多个函数和宏,首先引出的是可为 GetDisplayMode(可提供显示特征和功能)之类的自适应用户界面提供构造块的基本函数和宏。
您会看到 SCALEX、SCALEY、SCALERECT 和 SCALEPT,它们为当前分辨率适当缩放值。接下来,是可帮助针对当前显示特征缩放图像的函数(如 StretchIcon 和 ImageList_StretchBitmap),以及可用于在方向发生更改时自动调整对话框布局的函数,如 RelayoutDialog。
ScreenLib 和 DeviceResolutionAware.h 为构建本机分辨率感知应用程序奠定了坚实的基础。但同时,一定要注意,它们不是您的环境可能独有的设计和解决方案的替代品,尤其是直接与显示缓冲区进行交互或构建复杂 UI 时。

 

适用于托管应用程序的分辨率感知
对于托管代码应用程序,Microsoft .NET Compact Framework 提供了可帮助创建分辨率感知应用程序的一组显示属性。与 ScreenLib 中的功能类似,.NET Compact Framework 提供了将指定控件绑定到其父项边缘的 Control.Dock 属性。Control.Anchor 通过将控件绑定到距其父项边缘固定距离的位置提供了类似的功能。如果显示器无法容纳窗体中的控件,则使用 Control.AutoScroll 属性将自动添加滚动条。此外,Control.AutoScale 跟踪窗体的设计分辨率,并在 DPI 或分辨率更改时动态缩放窗体。正如您所料,对于较简单的窗体,Control.AutoScale 属性很好用,但是,随着窗体变得越来越复杂,它能发挥的作用会变得越来越有限。
对于较复杂的窗体,这些属性提供了一个起点,但它们不一定是完整的解决方案,尤其是在开始动态调整方向更改时。一种方法是使用 Orientation Aware Control (OAC),Microsoft 模式和实施方案小组已将其作为移动客户端软件工厂 ( msdn2.microsoft.com/library/aa480471) 的一部分发布。OAC 提供了一种面向多个方向的简单方法,尤其适用于基于窗体的应用程序。
安装 OAC 后,您可以使用 Visual Studio 中的托管窗体设计器先以纵向模式布置 UI,然后使用 OAC 旋转为横向模式。采用此新方向后,您可以根据需要横向调整 UI。OAC 将跟踪更改,以便当最终用户处于纵向或横向模式下在运行时使用适当的布局。
但是,使用 OAC 也存在一些弊端。首先,从本质上而言,OAC 允许您设计特定的方向和分辨率组合;因为支持的方向和分辨率将来可能发生更改,所以不鼓励使用此方法。其次,它不允许您明确设计不同的 DPI 或方形屏幕,方形屏幕最近在基于 Windows Mobile Standard 的 smartphone 设备上很流行。最后,由于 OAC 会为每个屏幕创建和管理多个布局,在您添加更多的窗体和增加复杂性时,性能下降会相当显著(在极端的情况下,这会显著增加您的应用程序启动时间)。
由于存在这些弊端,Windows Mobile 团队一直鼓励开发人员避免使用 OAC。该小组即将发布 Windows Mobile Line of Business Accelerator ( go.microsoft.com/fwlink/?LinkId=115317) 的新版本,该版本包括一个可帮助构建分辨率感知应用程序的组件,其中的分辨率感知应用程序包含单个 UI 并使用停靠、定位和其他技术。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值