如何获得silverlight + XNA应用程序的分辨率

时间:2013-10-26 09:57:12

标签: c# silverlight xna

我正在使用Silverlight和XNA框架开发游戏。我想获得移动屏幕的高度和宽度,以便在任何设备上运行应用程序。意味着应该支持所有设备扩展应用程序。

public partial class GamePage : PhoneApplicationPage
{
   public static ContentManager contentManager;
   GameTimer timer;
   SpriteBatch spriteBatch;
   GraphicsDeviceManager graphics;

   public GamePage()
   {
        InitializeComponent();

        //error at below line 
        graphics = new GraphicsDeviceManager(this);

        contentManager = (System.Windows.Application.Current as App).Content;

        rand = new Random();

        // Create a timer for this page
        timer = new GameTimer();
        timer.UpdateInterval = TimeSpan.FromTicks(333333);
        timer.Update += OnUpdate;
        timer.Draw += OnDraw;
    }

2 个答案:

答案 0 :(得分:2)

请注意我不确定这是否适用于手机。 GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width or Height将为您提供设备屏幕分辨率,

graphics.PreferredBackBufferHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height
graphics.PreferredBackBufferWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width
graphics.ApplyChanges();

修改

使用silverlight你必须这样做:

Application.Current.Host.Content.ActualHeight;
Application.Current.Host.Content.ActualWidth;

另请注意,相当于GraphicsDevciceManager的silverlight是SharedGraphicsDeviceManager

答案 1 :(得分:1)

Application.Current.RootVisual.RenderSize应该会提供这些信息。

或者您可以尝试:

int ScreenWidth = Application.Current.Host.Content.ActualWidth;  
int ScreenHeight = Application.Current.Host.Content.ActualHeight;