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

1

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
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

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.