Jakub Florczyk - Blog o programowaniu .NET

Programista praktyczny

Identyfikacja rozdzielczości VGA na urządzeniach Windows Mobile

Coraz więcej urządzeń Windows Mobile dostępnych na rynku posiada ekrany o wysokich rozdzielczościach (VGA i więcej). Jeżeli właściwość AutoScaleMode na formie jest ustawiona na Dpi, twoje kontrolki zostaną dopasowane automatycznie do aktualnej rozdzielczości. Jednakże jeżeli pewne elementy rysujesz ręcznie jak np. grafiki albo używasz ImageList nie zostaną one dopasowane. A więc jak rozwiązać ten problem?

Odpowiedź jest bardzo prosta. Problem ten można rozwiązać poprzez odczytanie właściwości CurrentAutoScaleDimensions form-a używając poniższego extension-a

  public static bool IsHighResolution(this Form form)
  {
       SizeF currentScreen = form.CurrentAutoScaleDimensions;
       if (currentScreen.Height == 192)
            return true;

       return false;
  }

Dla wszystkich rozdzielczości poniżej WQVGA CurrentAutoScaleDimensions zwraca wartość 96; powyżej otrzymujemy 192.

Poniżej prosty przykład powiększania grafik w ImageList aby dopasować je automatycznie do wielkości ekranu.

  if (this.IsHighResolution())
  {
    this.imageList1.ImageSize = new Size(32 * 2, 32 * 2);
  }

One ResponseLeave one →

Leave a Reply