Sdílet prostřednictvím


Správné zobrazení na displeji s vysokým rozlišením DPI

I když Direct2D řeší mnoho problémů s vysokým rozlišením DPI za vás, měli byste provést dva kroky, abyste měli jistotu, že vaše aplikace funguje správně na displejích s vysokým rozlišením DPI.

Krok 1: Použití vlastního DPI okna po jeho vytvoření

Funkce GetDpiForWindow načte tečky na palec (dpi) pro zadané okno. Pokud chcete tuto hodnotu použít k nastavení šířky okna, použijte následující vzorec:

< DPI> * <šířka, v pixelech> / <výchozí dpi>

... kde DPI je hodnota získaná pomocí GetDpiForWindow, a výchozí DPI je 96 (definované jako USER_DEFAULT_SCREEN_DPI v záhlaví winuser.h). Vzorec je podobný pro svislou osu:

< DPI> * <výška, v pixelech> / <výchozí Vertikální DPI>

Příklad kódu v kroku 2.3 Vytvoření jednoduché aplikace Direct2D načte DPI okna a poté nastaví jeho velikost na 640 × 480, v souladu s DPI.

Poznámka

Pro aplikaci univerzální platformy Windows (UPW) můžete použít vlastnost DisplayInformation::LogicalDpi.

Krok 2: Deklarujte, že aplikace je pracující s DPI

Když aplikace deklaruje, že je vědoma DPI, jedná se o příkaz určující, že se aplikace chová dobře při nastavení DPI až 200 DPI. V systémech Windows Vista a Windows 7 se při povolení virtualizace DPI škálují aplikace, které nerozpoznají DPI, a aplikace přijímají virtualizovaná data ze systémových rozhraní API, jako je například funkce GetSystemMetric. Pokud chcete deklarovat, že vaše aplikace využívá DPI, proveďte následující kroky.

  1. Vytvořte soubor s názvem DeclareDPIAware.manifest.

  2. Zkopírujte do souboru následující kód XML a uložte ho:

    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
      <asmv3:application>
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
          <dpiAware>true</dpiAware>
        </asmv3:windowsSettings>
      </asmv3:application>
    </assembly>
    
  3. Do souboru .vcproj projektu přidejte následující položku do každého elementu Configuration v části VisualStudioProject/Configurations:

    <Tool
        Name="VCManifestTool"
        AdditionalManifestFiles="DeclareDPIAware.manifest"
    />