导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何从 Windows Phone 8 的 Direct3D 应用中确定屏幕方向

2014/6/18

仅适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1

本主题介绍如何从 Windows Phone Direct3D 应用 确定手机的方向。您可以使用传感器 API 确定手机的方向,这对于增强现实的应用和游戏有用,但是如果您只对手机处于纵向模式还是横向模式感兴趣,那么这就过于复杂和昂贵。相反,您的应用可以查询 DisplayProperties 类的 CurrentOrientation 属性来获取手机的当前方向。返回的值是 DisplayOrientations 枚举的成员,该枚举表示手机为纵向、横向、纵向翻转还是横向翻转。您也可以通过将 AutoRotationPreferences 属性设置为这些枚举值中的一个或多个(与 or 操作符相结合),指定您的应用支持其中的哪些方向。

如果在您的应用已经运行了短暂的一段时间后再检查当前方向,CurrentOrientation 的值将是准确的。但是,当您的应用首次启动时,加速计启动的时间和 OS 用以确定方向的时间可能不一样,因此,最好订阅 OrientationChanged 事件。当手机转换到您在设置 AutoRotationPreferences 时指定的任一方向时,将触发该事件。如果用户使用处于除纵向以外任一方向的手机启动您的应用,而且您已经将该方向包括在您的自动旋转首选项中,那么您的应用启动时将引发该事件。当然,如果您希望在您的应用运行期间,当方向发生改变时收到警报,您也可以使用该事件。

说明注意:

使用 DrawingSurfaceDrawingSurfaceBackgroundGrid 网格来显示托管应用中的 Direct3D 图形的应用,无法使用该方法确定方向。有关使用托管代码检测方向变化的信息,请参见快速入门:Windows Phone 8 的屏幕方向

检测方向变化

  1. 创建新的 Direct3D 项目。本示例假设您将该项目命名为“NativeFundamentals”。

  2. 在 NativeFundamentals.h 头文件中,声明 OrientationChanged 事件的处理程序。也声明成员变量以存储当前方向。

    
    	void OnOrientationChanged(Platform::Object^ sender);
    
    
    
    
    	Windows::Graphics::Display::DisplayOrientations m_currentOrientation;
    
    
    
  3. 在 NativeFundamentals.cpp 文件顶部,添加 using 指令以包括 Windows.Graphics.Display 命名空间。

    
    using namespace Windows::Graphics::Display;
    
    
    
  4. 在 NativFundamentals.cpp 的 OnActivated 方法中,将成员变量设置为 DisplayOrientations::Portrait。这是默认方向。如果手机处于此方向,则不会引发 OrientationChanged

    
    	m_currentOrientation = DisplayOrientations::Portrait;
    
    
    
  5. 接下来,在 OnActivated 中设置您的应用支持的方向。只有当手机转换到您使用此属性设置的方向时,才会引发 OrientationChanged

  6. 仍然在 OnActivated 中,将您声明的事件处理程序与 OrientationChanged 事件挂钩。

  7. 最后,在 NativeFundamentals.cpp 中,通过检查 CurrentOrientation 属性来实现事件处理程序。

显示:
© 2014 Microsoft