Direct2D et High-DPI
L’écriture d’une application prenant en charge les ppp est la clé de l’apparence cohérente d’une interface utilisateur dans un large éventail de paramètres d’affichage haute résolution. Une application qui n’est pas prenant en charge les PPP, mais qui s’exécute sur un paramètre d’affichage haute résolution peut souffrir de nombreux artefacts visuels, notamment la mise à l’échelle incorrecte des éléments d’interface utilisateur, le texte clippé et les images floues. En ajoutant la prise en charge de votre application pour la prise en charge des ppp, vous rendez la présentation de l’interface utilisateur de votre application plus prévisible, ce qui rend plus visuellement attrayant et plus facile à lire pour les utilisateurs. Heureusement, Direct2D facilite l’écriture d’applications qui fonctionnent bien en haute résolution. Cette rubrique contient les sections suivantes.
- prise en charge High-DPI dans direct2D
- Windows 8 et High-DPI
- Qu’est-ce qu’un DIP ?
- rubriques connexes
prise en charge de High-DPI dans Direct2D
Direct2D fournit les fonctionnalités suivantes pour l’utilisation de scénarios haute résolution :
- Il respecte automatiquement le DPI système lors de la création d’une cible de rendu fenêtré, tant que le manifeste de l’application indique que l’application gère correctement le ppp. (Pour plus d’informations sur la façon de déclarer que votre application prend en charge les ppp, consultez Comment s’assurer que votre application s’affiche correctement sur High-DPI Affiche.)
- Il exprime les coordonnées dans les ADRESSES IP (pixels indépendants de l’appareil), ce qui permet à l’application de mettre à l’échelle automatiquement lorsque le paramètre PPP change.
- Il permet aux bitmaps d’avoir un ppp et de les mettre à l’échelle correctement en prenant en compte l’ppp. Cette fonctionnalité peut également être utilisée pour gérer des icônes à différentes résolutions.
- Il exprime la plupart des ressources dans les ADRESSES IP, ce qui rend les ressources automatiquement indépendantes de la résolution.
- Il utilise un espace de coordonnées à virgule flottante et un anticrénelage, afin que tout contenu puisse être mis à l’échelle vers n’importe quel ppp arbitraire.
Le pipeline graphique Direct2D est conçu pour passer de 96 PPP à 1200DPI.
Windows 8 et High-DPI
À compter de Windows 8, il existe des fonctionnalités supplémentaires pour la prise en charge haute résolution.
Si l’indicateur de résolution du contexte de l’appareil est suffisamment élevé, Direct2D modifie le seuil qu’il utilise pour activer l’anticrénelage vertical du texte. Cela entraîne un rendu de texte plus rapide sur les affichages haute résolution. En outre, vous pouvez basculer le mode d’unité en pixels au lieu des DIPs à l’aide de la méthode ID2D1DeviceContext ::SetUnitMode. Si vous définissez le mode d’unité sur pixels et que le DPI du contexte de l’appareil est défini sur l’ppp d’écran, l’optimisation est toujours activée.
Qu’est-ce qu’un DIP ?
Un pixel indépendant de l’appareil (DIP) est un pixel logique qui est mappé aux pixels de l’appareil physique par le biais d’un scalaire, le DPI. Ppp signifie points par pouce, où un point représente un pixel d’appareil physique. (La nomenclature provient de l’impression, où les points sont le plus petit point d’encre qu’un processus d’impression peut produire). Étant donné qu’un moniteur standard a utilisé 96 points par pouce, un PPP de 96 signifie qu’un pixel indépendant de l’appareil (ou DIP) mappé 1:1 avec un pixel physique. Par exemple, si l’ppp était 96*2 = 192, un seul DIP englobe deux pixels physiques.
Il existe de nombreuses raisons pour lesquelles les applications ne gèrent pas nécessairement cette mise à l’échelle correctement ; L’une des raisons les plus simples est qu’il faut un travail supplémentaire pour découvrir et utiliser cette valeur scalaire lors du rendu. Dans Direct2D, la mise à l’échelle est appliquée par défaut. En raison de ce mappage, les pixels d’appareil physique peuvent se retrouver à des coordonnées DIP fractionnaires, ce qui est l’une des raisons pour lesquelles Direct2D utilise un espace de coordonnées à virgule flottante.
- pixel physique = (dip × DPI) / 96
Pour convertir un pixel physique en dip, utilisez cette formule :
- dip = (pixel physique × 96) / PPP
Note
À compter de Windows 8, vous pouvez basculer le mode d’unité en pixels au lieu des DIPs à l’aide de la méthode ID2D1DeviceContext ::SetUnitMode.
Rubriques connexes