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.
La mise à l’échelle automatique permet à un formulaire et à ses contrôles, conçus sur un ordinateur avec une certaine résolution ou police d’affichage, d’être affichés de manière appropriée sur un autre ordinateur avec une autre résolution d’affichage ou une police différente. Il garantit que le formulaire et ses contrôles seront redimensionnés intelligemment pour être cohérents avec les fenêtres natives et d’autres applications sur les machines des utilisateurs et d’autres développeurs. La mise à l’échelle automatique et les styles visuels permettent aux applications Windows Forms de maintenir une apparence cohérente par rapport aux applications Windows natives sur l’ordinateur de chaque utilisateur.
Dans la plupart des cas, la mise à l’échelle automatique fonctionne comme prévu dans Windows Forms. Toutefois, les modifications apportées au schéma de police peuvent être problématiques. Pour obtenir un exemple de résolution de ce problème, consultez Comment : répondre aux modifications apportées au schéma de police dans une application Windows Forms.
Besoin de mise à l’échelle automatique
Sans mise à l’échelle automatique, une application conçue pour une résolution d’affichage ou une police apparaît trop petite ou trop grande lorsque cette résolution ou cette police est modifiée. Par exemple, si l’application est conçue à l’aide de Tahoma 9 point comme base de référence, sans ajustement, elle apparaît trop petite si elle est exécutée sur un ordinateur où la police système est Tahoma 12 point. Les éléments de texte, tels que les titres, les menus, le contenu de la zone de texte, et ainsi de suite s’affichent plus petits que d’autres applications. En outre, la taille des éléments d’interface utilisateur qui contiennent du texte, tels que la barre de titre, les menus et de nombreux contrôles dépendent de la police utilisée. Dans cet exemple, ces éléments apparaissent également relativement plus petits.
Une situation analogue se produit lorsqu’une application est conçue pour une certaine résolution d’affichage. La résolution d’affichage la plus courante est de 96 points par pouce (PPP), ce qui équivaut à une mise à l'échelle d’affichage à 100 %%. Cependant, les résolutions d'affichage plus élevées comme 125 %%, 150 %%et 200 %% (qui correspondent respectivement à 120, 144 et 192 PPP) deviennent de plus en plus courantes. Sans ajustement, une application, en particulier une application basée sur des graphiques, conçue pour une résolution apparaît trop grande ou trop petite lors de l’exécution à une autre résolution.
La mise à l’échelle automatique cherche à résoudre ces problèmes en redimensionnant automatiquement le formulaire et ses contrôles enfants en fonction de la taille de police relative ou de la résolution d’affichage. Le système d’exploitation Windows prend en charge la mise à l’échelle automatique des boîtes de dialogue à l’aide d’une unité relative de mesures appelée unités de dialogue. Une unité de dialogue est basée sur la police système et sa relation avec les pixels peut être déterminée par le biais de la fonction GetDialogBaseUnitssdk Win32 . Lorsqu’un utilisateur modifie le thème utilisé par Windows, toutes les boîtes de dialogue sont automatiquement ajustées en conséquence. De plus, Windows Forms prend en charge la mise à l’échelle automatique en fonction de la police système par défaut ou de la résolution d’affichage. Si vous le souhaitez, la mise à l’échelle automatique peut être désactivée dans une application.
Avertissement
Les mélanges arbitraires de modes de mise à l’échelle de police et ppp ne sont pas pris en charge. Bien que vous puissiez mettre à l’échelle un contrôle utilisateur à l’aide d’un mode (par exemple, PPP) et le placer sur un formulaire à l’aide d’un autre mode (Police) sans problème, le mélange d’un formulaire de base dans un mode et d’un formulaire dérivé dans un autre peut toutefois entraîner des résultats inattendus.
Mise à l’échelle automatique en action
Windows Forms utilise la logique suivante pour mettre automatiquement à l’échelle les formulaires et leur contenu :
Au moment du design, chacun ContainerControl enregistre le mode de mise à l’échelle et sa résolution actuelle dans les AutoScaleMode et AutoScaleDimensions, respectivement.
Au moment de l’exécution, la résolution réelle est stockée dans la CurrentAutoScaleDimensions propriété. La AutoScaleFactor propriété calcule dynamiquement le rapport entre l’exécution et la résolution de mise à l’échelle au moment du design.
Lorsque le formulaire se charge, si les valeurs de CurrentAutoScaleDimensions et AutoScaleDimensions sont différentes, la méthode PerformAutoScale est appelée pour mettre à l’échelle le contrôle et ses enfants. Cette méthode suspend la disposition et appelle la Scale méthode pour effectuer la mise à l’échelle réelle. Ensuite, la valeur de AutoScaleDimensions est mise à jour pour éviter une mise à l’échelle progressive.
PerformAutoScale est également appelé automatiquement dans les situations suivantes :
En réponse à l'événement OnFontChanged si le mode de mise à l'échelle est Font.
Lorsque la disposition du contrôle conteneur reprend et qu'une modification est détectée dans les propriétés AutoScaleDimensions ou AutoScaleMode.
Comme indiqué ci-dessus, lorsqu’on redimensionne un parent ContainerControl. Chaque contrôle de conteneur est responsable de la mise à l'échelle de ses enfants à l’aide de ses propres facteurs de mise à l’échelle et non de ceux de son conteneur parent.
Les contrôles enfant peuvent ajuster leur mode de mise à l'échelle de plusieurs façons :
La ScaleChildren propriété peut être redéfinie pour déterminer si les contrôles enfants doivent être ajustés ou non.
La GetScaledBounds méthode peut être substituée pour ajuster les limites auxquelles le contrôle est mis à l’échelle, mais pas la logique de mise à l’échelle.
La ScaleControl méthode peut être substituée pour modifier la logique de mise à l’échelle du contrôle actuel.
Voir aussi
.NET Desktop feedback