Direct2D és High-DPI
A DPI-vel rendelkező alkalmazások írása kulcsfontosságú annak érdekében, hogy a felhasználói felület (UI) folyamatosan jól nézzen ki a magas DPI-megjelenítési beállítások széles választékában. A DPI-vel nem rendelkező, de magas DPI-megjelenítési beállításon futó alkalmazások számos vizuális összetevőt érinthetnek, beleértve a felhasználói felület elemeinek helytelen méretezését, a levágott szöveget és a homályos képeket. Ha támogatást ad az alkalmazáshoz a DPI-tudatosság érdekében, kiszámíthatóbbá teszi az alkalmazás felhasználói felületének bemutatását, így vizuálisan vonzóbbá és könnyebben olvashatóvá válik a felhasználók számára. Szerencsére a Direct2D minden eddiginél egyszerűbbé teszi a magas DPI-vel jól működő alkalmazások írását. Ez a témakör a következő szakaszokat tartalmazza.
High-DPI támogatás a Direct2D-ben
A Direct2D a következő funkciókat biztosítja a magas DPI-forgatókönyvek használatához:
- Automatikusan tiszteletben tartja a rendszer DPI-t egy ablakos renderelési cél létrehozásakor, amennyiben az alkalmazásjegyzék azt jelzi, hogy az alkalmazás megfelelően kezeli a DPI-t. (Az alkalmazás DPI-vel való deklarációjának módjáról további információt Az alkalmazás megfelelő megjelenítésének biztosítása a High-DPI megjelenítési.)
- A DIP-kben (eszközfüggetlen képpontokban) kifejezi a koordinátákat, így az alkalmazás automatikusan skálázható a DPI-beállítás módosításakor.
- Lehetővé teszi, hogy a bitképek DPI-vel rendelkezzenek, és a DPI figyelembevételével megfelelően skálázhatók. Ez a funkció az ikonok különböző felbontásban való karbantartására is használható.
- A legtöbb erőforrást a DIP-kben fejezi ki, ami automatikusan függetleníti az erőforrásokat a megoldástól.
- Lebegőpontos koordináta-területet és antialiasingot használ, így bármilyen tartalom tetszőleges DPI-re skálázható.
A Direct2D grafikus folyamat 96 DPI-ről 1200DPI-ra skálázható.
Windows 8 és High-DPI
A Windows 8-tól kezdve a magas DPI-támogatás további funkciókkal is rendelkezik.
Ha az eszközkörnyezet DPI-je elég magas, a Direct2D módosítja a szöveg függőleges antialiasingjának engedélyezéséhez használt küszöbértéket. Ez gyorsabb szövegmegjelenítést eredményez a magas DPI-kijelzőkön. Emellett az egységmódot képpontokra is válthatja a dip-k helyett a ID2D1DeviceContext::SetUnitMode metódussal. Ha az egységmódot képpontokra állítja, és az eszközkörnyezet DPI-jét a képernyő DPI-jére állítja, az optimalizálás továbbra is engedélyezve lesz.
Mi az a DIP?
Az eszközfüggetlen képpont (DIP) egy logikai képpont, amely a fizikai eszköz képpontjaihoz képez le egy skalárt, a DPI-t. A DPI a hüvelykenkénti pontokat jelenti, ahol a pont egy fizikai eszköz képpontja. (A nómenklatúra a nyomtatásból származik, ahol a pont a legkisebb szabadkézik pont, amelyet a nyomtatási folyamat képes előállítani). Mivel a szabványos monitorok 96 pont/hüvelyk méretűek, a 96-os DPI azt jelentette, hogy egy eszközfüggetlen képpont (vagy DIP) 1:1-re van leképezve egy fizikai képponttal. Ha például a DPI 96*2 = 192, akkor egyetlen DIP két fizikai képpontot foglalna magában.
Számos oka van annak, hogy az alkalmazások nem feltétlenül kezelik megfelelően ezt a skálázást; Az egyik legegyszerűbb ok az, hogy további munkát igényel a skaláris érték felderítéséhez és használatához a renderelés során. A Direct2D-ben a rendszer alapértelmezés szerint alkalmazza a skálázást. A leképezés miatt a fizikai eszköz képpontjai tört DIP-koordinátákhoz kerülhetnek, ami az egyik oka annak, hogy a Direct2D lebegőpontos koordináta-helyet használ.
- fizikai képpont = (dip × DPI) / 96
Ha egy fizikai képpontot DIP formátumba szeretne konvertálni, használja a következő képletet:
- dip = (fizikai képpont × 96) / DPI
Jegyzet
A Windows 8-tól kezdve az egységmódot képpontokra válthatja a DIP-k helyett a ID2D1DeviceContext::SetUnitMode metódus használatával.
Kapcsolódó témakörök