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.
Vytvořte soubor s názvem DeclareDPIAware.manifest.
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>
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" />