Direct2D a High-DPI
Zápis aplikace pracující s DPI je klíčem k tomu, aby uživatelské rozhraní (UI) vypadalo konzistentně v široké škále nastavení zobrazení s vysokým rozlišením DPI. Aplikace, která není v rozlišení DPI, ale běží na nastavení zobrazení s vysokým rozlišením DPI, může trpět mnoha vizuálními artefakty, včetně nesprávného škálování prvků uživatelského rozhraní, oříznutého textu a rozmazaných obrázků. Přidáním podpory v aplikaci pro rozpoznávání DPI zpřístupňujete prezentaci uživatelského rozhraní aplikace předvídatelněji, aby byla vizuálně přitažlivější a čitelnější pro uživatele. Direct2D naštěstí usnadňuje psaní aplikací, které dobře fungují ve vysokém ROZLIŠENÍ DPI. Toto téma obsahuje následující části.
- podpora High-DPI v direct2D
- Windows 8 a s vysokým rozlišením DPI
- Co je DIP?
- související témata
podpora High-DPI v Direct2D
Direct2D poskytuje následující funkce pro práci se scénáři s vysokým rozlišením DPI:
- Při vytváření cíle vykreslení s okny automaticky respektuje systém DPI, pokud manifest aplikace indikuje, že aplikace zpracovává DPI správně. (Informace o tom, jak deklarovat, že aplikace je pracující s DPI, najdete v tématu Jak zajistit správné zobrazení aplikace na High-DPI zobrazení.)
- Vyjadřuje souřadnice v dips (Pixely nezávislé na zařízení), což aplikaci umožňuje automaticky škálovat při změně nastavení DPI.
- Umožňuje rastrové obrázky mít DPI a správně je škáluje tak, že vezme v úvahu DPI. Tuto funkci lze také použít k udržování ikon v různých rozlišeních.
- Vyjadřuje většinu prostředkůvch služby, což prostředky automaticky nezávislé na rozlišení.
- Používá souřadnicový prostor s plovoucí desetinou čárkou a antialiasing, takže jakýkoli obsah lze škálovat na libovolný DPI.
Grafický kanál Direct2D je navržený tak, aby škáloval z 96 DPI na 1200DPI.
Windows 8 a High-DPI
Od Windows 8 jsou k dispozici další funkce pro podporu vysokého DPI.
Pokud je kontext zařízení dostatečně vysoký, Direct2D změní prahovou hodnotu, pomocí které povolí vertikální antialiasing textu. Výsledkem je rychlejší vykreslování textu na displejích s vysokým rozlišením DPI. Kromě toho můžete režim jednotek přepnout na pixely místo DIPs pomocí metody ID2D1DeviceContext::SetUnitMode. Pokud nastavíte režim jednotek na pixely a dpi kontextu zařízení na obrazovku DPI, optimalizace je stále povolená.
Co je DIP?
Nezávislý pixel zařízení (DIP) je logický pixel, který se mapuje na pixely fyzického zařízení prostřednictvím skalárního dpi. DPI je zkratka pro tečky na palec, kde tečka představuje pixel fyzického zařízení. (Nomenklatura pochází z tisku, kde tečky jsou nejmenší inkoustovou tečkou, kterou může tiskový proces vytvořit). Vzhledem k tomu, že standardní monitor má 96 bodů na palec, znamená DPI 96, že nezávislý pixel (nebo DIP) zařízení mapoval 1:1 s fyzickým pixelem. Pokud by například DPI bylo 96*2 = 192, pak jedna dip by zahrnovala dva fyzické pixely.
Existuje mnoho důvodů, proč aplikace nemusí nutně zpracovávat toto škálování správně; Jedním z nejjednodušších důvodů je, že při vykreslování vyžaduje další práci ke zjištění a použití této skalární hodnoty. Ve službě Direct2D se škálování použije ve výchozím nastavení. Kvůli tomuto mapování můžou pixely fyzických zařízení končit zlomkovými souřadnicemi DIP, což je jeden z důvodů, proč Direct2D používá souřadnicový prostor s plovoucí desetinnou čárkou.
- fyzický pixel = (dip × DPI) / 96
Pokud chcete převést fyzický pixel na DIP, použijte tento vzorec:
- dip = (fyzický pixel × 96) / DPI
Poznámka
Počínaje Systémem Windows 8 můžete režim jednotek přepnout na pixely místo bodů pomocí metody ID2D1DeviceContext::SetUnitMode.
Související témata