Pergunta

Estou escrevendo um aplicativo Compact Framework para Windows Mobile 6.5.O Aplicativo será vendido no Windowsphone Marketplace.Para fazer isso, tenho que suportar vários tamanhos e resoluções de tela... mas como faço isso?Existe uma prática recomendada ou algo assim?Eu uso principalmente controles padrão, mas uma imagem de fundo no Mainform... preciso armazená-la em qualquer resolução e mostrá-la dinamicamente, dependendo de qual dispositivo meu aplicativo executa?

Obrigado por suas sugestões e ajuda

Tomás

Foi útil?

Solução

Vou começar a dizer que este é um tópico controverso.

Minha opinião pessoal é que você deve identificar faixas de resolução/tamanhos significativamente diferentes e fornecer uma camada de interface do usuário diferente em que você pode trocar quando detectar um redimensionamento que vai de um intervalo para o outro (a troca dinamicamente pode nem ser um requisito para você - nisso Caso que você acabou de verificar no tempo de carregamento). Obviamente, essa abordagem não faz sentido se os intervalos que você identificar forem muito limitados e semelhantes entre si, pois dentro do mesmo intervalo, seu aplicativo deve ser capaz de redimensionar decentemente.

Tentar abordar todas as resoluções possíveis com a mesma camada de interface do usuário pode parecer uma ótima idéia, mas pode ser uma receita para o desastre. Você pode funcionar, mas provavelmente acabará com uma bola de barbante, com um monte de declarações de if-else e troca de tamanhos de pixel, redimensionando controles e movendo as coisas.

Se você pensar bem, o Google Maps (por um, mas pense em qualquer aplicativo para iPhone) não serve a mesma interface do usuário no celular e no seu navegador de desktop e assim por diante. Se essa é a diferença de tamanho que estamos falando (resoluções móveis do tipo desktop), você terá que rolar diferentes camadas da interface do usuário, conforme minha sugestão acima.

O Santo Graal é o chamado layout líquido - o WPF pode ajudar nisso, mas como você está na estrutura compacta que é descartada.

Recentemente, fiz uma pergunta muito semelhante - você pode dar uma olhada nela Aqui se você quiser ler opiniões diferentes.

Outras dicas

Isso é difícil.Tive resultados razoáveis ​​com o seguinte plano de baixo esforço.(Isso é orientado para Winform, aliás)

O maior problema está nas resoluções que são menor do que o esperado.Portanto, crie suas telas tão pequenas quanto possível e preste atenção especial às configurações de âncora e encaixe.Ao exibir cada formulário, configure-o para tela inteira e as propriedades de ancoragem devem fazer um trabalho razoável ao exibir as coisas de maneira sensata.

Isso só começa a parecer bobo se a resolução for MUITO maior do que o previsto.
Observe que você pode encontrar o tamanho da tela da plataforma atual por meio da chamada Screen.PrimaryScreen.Bounds.

Recentemente, construí um pequeno aplicativo, apenas para experimentar as coisas. Eu precisava exibir uma imagem em segundo plano, para não poder usar os controles internos como a etiqueta e assim por diante, porque eles não suportam um fundo transparente.

Acabei desenhando toda a interface no evento de pintura do formulário, usando GDI+.

O manuseio de diferentes resoluções de tela acabou sendo bastante simples: a interface é prototipada para uma tela regular de 96dpi (a menor), todos os tamanhos são dimensionados usando um fator calculado como 96/real_dpi. Você pode recuperar a configuração DPI real da tela usando o código encontrado aqui (um pouco velho, mas ainda funcionando). Em seguida, testei o aplicativo com todas as resoluções fornecidas pelos emuladores e não encontrei problemas.

Advertência: Eu "perdi" a parte inferior da tela para que nada de especial fosse necessário para abordar telas quadradas e orientações paisagísticas/retratos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top