Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment configurer la résolution utilisée par les contrôles XAML de Win2D. Il explique comment :
- Exécuter des contrôles Win2D à une résolution fixe.
- Ajustez la résolution de contrôle pour améliorer les performances en affichant moins de pixels.
Résolution et dimensionnement des contrôles
« Résolution », tel qu’il est utilisé dans ce document, est un autre mot pour la taille d’une bitmap. Il se compose d’une largeur et d’une hauteur.
Les objets sur lesquels dessinent les contrôles XAML Win2D ont une résolution. Ils ont également un DPI. Le DPI d'un objet mesure la densité des pixels de cet objet lorsqu'il est dessiné. Le PPP se comporte comme un coefficient d'échelle : un PPP élevé augmente le nombre de pixels qui composent l'objet dessiné. En revanche, réduire le ppp d’un objet signifie qu’il s’étendra sur moins de pixels. Pour plus d’informations sur la manière dont Win2D gère le DPI en général, consultez cette page.
La taille indépendante du DPI est parfois appelée « taille logique ». Une taille dépendante du DPI, exprimée en pixels, est appelée « taille physique ».
En termes de résolution et de dimensionnement, le comportement par défaut d’un contrôle lorsqu’il est chargé est :
- La taille logique du contrôle est déterminée par sa disposition, telle qu’elle se trouve dans l’arborescence XAML.
- Le DPI est obtenu à partir de l'environnement. Le DPI du contrôle est défini en conséquence.
- Le nombre de pixels physiques composant la zone de dessin du contrôle est déterminé par la taille du contrôle, mise à l'échelle selon son DPI.
- Sur un ppp élevé, la taille physique sera supérieure (plus de pixels) par rapport à la taille logique.
- Sur une faible résolution, la taille physique sera plus petite (moins de pixels) par rapport à la taille logique.
- Avec le DPI par défaut, la taille physique et la taille logique de la zone de dessin sont identiques.
- La ressource de dessin du contrôle (
CanvasImageSourcepourCanvasControl,CanvasVirtualImageSourcepourCanvasVirtualControletCanvasSwapChainpourCanvasAnimatedControl) est ajustée pour correspondre à la taille et au PPP du contrôle.
La plupart des opérations Win2D sont effectuées en DIP (unités indépendantes du DPI), et les ressources de dessin des contrôles XAML Win2D sont automatiquement dimensionnées pour tenir compte du DPI. Cela signifie que les applications peuvent souvent ignorer le DPI. Les tailles et les coordonnées sont toujours indépendantes des DPI, sauf indication contraire. Une application peut coder en dur différentes tailles et coordonnées auxquelles les éléments sont dessinés dans les interfaces de contrôle, et ce contenu est mis à l’échelle lorsque l’application est exécutée dans des environnements avec différents DPI.
Mais pour certaines applications, le comportement par défaut n’est pas suffisant. Cet article décrit quelques scénarios où la valeur par défaut n’est pas suffisante et ce que les applications peuvent faire pour le corriger.
Scénario : les contenus du contrôle doivent être d'une résolution fixe et inférieure à la résolution standard
Ce scénario peut survenir, par exemple, sur un jeu sprite 2D qui doit toujours s’afficher à une résolution fixe de 640 x 480, quel que soit le matériel d’affichage réel sur lequel il est exécuté.
La résolution de ce problème ne nécessite pas strictement l’écriture d’un nouveau code Win2D.
L'objet XAML Viewbox vous permet de contraindre la taille de ses éléments visuels enfants, en ajoutant automatiquement une mise à l'échelle avec des bandes noires horizontales ou verticales afin de préserver le rapport hauteur/largeur si nécessaire.
Assurez-vous simplement que votre CanvasControl, CanvasVirtualControl ou CanvasAnimatedControl est un élément enfant d’un ViewBoxet limitez la taille de ce contrôle.
Par exemple, pour limiter la taille du contrôle à 320 pixels de large et 224 pixels de haut, quel que soit le DPI, au lieu de :
<canvas:CanvasAnimatedControl/>
Utilisez :
<Viewbox>
<canvas:CanvasAnimatedControl Width="320" Height="224"/>
</Viewbox>
Si votre application ne doit pas préserver le rapport hauteur/largeur en ajoutant des bandes noires horizontales ou verticales, ajoutez l'attribut Stretch :
<Viewbox Stretch="Fill">
<canvas:CanvasAnimatedControl Width="320" Height="224"/>
</Viewbox>
Notez que la mise à l’échelle effectuée par l’élément Viewbox ne garantit aucun contrôle sur le mode d’interpolation. La méthode de filtrage peut ressembler à CanvasInterpolationMode.Linear, ou à quelque chose de similaire. Si votre application a besoin d’un mode d’interpolation particulier, n’utilisez pas ViewBox avec un contrôle de taille fixe. À la place, dessinez sur un CanvasRenderTarget intermédiaire de taille fixe, puis utilisez le mode d'interpolation souhaité pour dessiner cet intermédiaire mis à l'échelle sur la cible.
Scénario : l’application ne peut pas fonctionner correctement à des résolutions élevées
Certains appareils ont des affichages à très haute résolution, mais leur unité de traitement graphique n’est pas assez puissante pour animer de nombreux pixels en douceur. Les développeurs ne savent peut-être pas facilement comment leurs applications s’exécutent sur ces appareils sans les tester.
Vous pouvez notamment utiliser la propriété DpiScale du contrôle pour réduire son DPI.
Par exemple, pour corriger le contrôle à mi-résolution, utilisez :
<canvas:CanvasAnimatedControl DpiScale="0.5" />
Le facteur d’échelle DPI réel dépend des besoins de votre application. L’une des options consiste à calculer un facteur d’échelle qui fixera la résolution de l'application à 96 ppp, sans dépasser.
Par exemple:
float dpiLimit = 96.0f;
if(control.Dpi > dpiLimit)
{
control.DpiScale = dpiLimit / control.Dpi;
}
Pour garantir que ce paramètre continue de fonctionner lors des changements de DPI, l'application doit s'abonner à DisplayInformation.DpiChanged et utiliser cette logique dans le gestionnaire afin de définir l'échelle DPI en fonction du nouveau DPI.
Cela permet d’économiser une surcharge d’utilisation de l’application, en exploitant le fait que les utilisateurs peuvent ne pas être en mesure de percevoir facilement la résolution réduite sur un affichage haute résolution.
La mise à l’échelle effectuée en ayant une ressource de contrôle de résolution inférieure à native ne peut pas garantir le contrôle du mode d’interpolation, similaire à ViewBox mentionné ci-dessus. Si votre application a besoin d’un mode d’interpolation particulier, utilisez plutôt un intermédiaire.
Windows developer