Quarta-Feira, 20 de Marco de 2019
Home Devs

[Desenvolvimento] Como obter a resolução da tela do dispositivo via C#

26/03/2015 579 0
[Desenvolvimento] Como obter a resolução da tela do dispositivo via C#

Olá pessoal, tudo bom?

O Windows Phone 8 update 3 suporta aparelhos com resoluções WVGA, WXGA, 720p e 1080p, diferente do que acontece com o Windows Phone 7.1 que suporta apenas a resolução WVGA, assim, resolvi escrever esse post para ajudar em situações onde o desenvolvedor precise determinar a resolução do dispositivo para ajustar o layout ou outros detalhes da APP.

Para perceber melhor as diferenças entre as resoluções observe a tabela e a figura abaixo:

Resolução Aspecto Resolução dimensionada
WVGA 480×800 15:9 480×800
WXGA 768×1280 15:9 480×800
720p 720×1280 16:9 480×853
1080p 1080×1920 16:9 480×853
Fonte: https://msdn.microsoft.com/…
Fonte: httpss://msdn.microsoft.com/en-us/library/windows/apps/jj206974(v=vs.105).aspx#BKMK_UsingtheGridcontrol

Fonte: httpss://msdn.microsoft.com/en-us/library/windows/apps/jj206974(v=vs.105).aspx#BKMK_UsingtheGridcontrol

Dado o exposto, vejamos como reconhecer a resolução do dispositivo via código C#.

1º passo: Criar uma classe que retorne a resolução do aparelho. No meu exemplo a classe foi nomeada como ResolucaoTela.cs e na solução do Visual Studio está acomodada em uma pasta chamada Helper.

using System;

namespace ResolucaoTela.Helper
{
  public enum Resolucoes { WVGA, WXGA, HD };

  public static class ResolucaoHelper
  {
    private static bool IsWvga
    {
      get { return App.Current.Host.Content.ScaleFactor == 100; }
    }

    private static bool IsWxga
    {
      get { return App.Current.Host.Content.ScaleFactor == 160; }
    }

    private static bool IsHD
    {
      get { return App.Current.Host.Content.ScaleFactor == 150; }
    }

    public static Resolucoes ResolucaoAtual
    {
      get
      {
        if (IsWvga) return Resolucoes.WVGA;
        else if (IsWxga) return Resolucoes.WXGA;
        else if (IsHD) return Resolucoes.HD;
        else throw new InvalidOperationException("Resolução desconhecida.");
      }
    }
  }
}

2º passo: No code-behind da página XAML fazer uso da classe definida acima e determinar a resolução atual para a APP

public partial class MainPage : PhoneApplicationPage
{
  // Constructor
  public MainPage()
  {
  InitializeComponent();

  switch (Helper.ResolucaoHelper.ResolucaoAtual)
  {
    case Helper.Resolucoes.WVGA:
      txtResolucao.Text = "WVGA - 480 x 800 - Resolução dimensionada: 480 x 800";
      break;
    case Helper.Resolucoes.WXGA:
      txtResolucao.Text = "WXGA - 768 x 1280 - Resolução dimensionada: 480 x 800";
      break;
    case Helper.Resolucoes.HD:
      txtResolucao.Text = "HD - 720 x 1280 - Resolução dimensionada: 480 x 853";
      break;
  }
...
...

Fica a dica!

Abraços,

Eduardo Henrique Rizo (@eduardorizo)

MCP

Post Relacionado: 

Fonte: Blog do Eduardo H. Rizo

Compartilhe:

Comentários: