Autoscaling WinForms : adaptation aux polices système et aux paramètres DPI
Présentation
Les critiques précédentes suggéraient souvent que les capacités de mise à l'échelle automatique de WinForms étaient inférieures à celles de WPF. Cependant, sur la base des recherches et des tests de l'auteur, la fonctionnalité de mise à l'échelle automatique de WinForms s'est considérablement améliorée dans .NET 2.0.
Contrôle de la limite du zoom
Malgré les améliorations, certains contrôles dans WinForms ont encore des limites de mise à l'échelle et doivent être évités :
-
AutoSize = False et hérite du Label de la police : Définissez explicitement la police du contrôle dans la fenêtre des propriétés afin qu'elle apparaisse en gras.
-
Largeur de colonne ListView : (remplacez le ScaleControl du formulaire pour corriger ce problème)
- Propriétés Panel1MinSize, Panel2MinSize et SplitterDistance de SplitContainer
-
MultiLine = True et TextBox héritant de la police : Définit explicitement la police du contrôle.
-
Image pour ToolStripButton : Ajustez ToolStrip.AutoSize et ToolStrip.ImageScalingSize dans le constructeur du formulaire.
-
PictureBox.SizeMode doit être défini sur Zoom ou StretchImage.
-
Images pour TreeView : Définissez ImageList.ImageSize en fonction de CreateGraphics.DpiX et .DpiY.
-
Taille du formulaire : Redimensionnez manuellement un formulaire de taille fixe après sa création.
Guide de conception à mise à l'échelle automatique
Pour garantir une mise à l'échelle automatique correcte dans WinForms, les directives suivantes doivent être suivies :
- Définissez le AutoScaleMode de tous les ContainerControls sur Font.
- Définissez les AutoScaleDimensions de tous les ContainerControls sur 6F, 13F en supposant 96 dpi et une police par défaut (MS Sans Serif).
- Travailler à 96 dpi et modifier les propriétés pour remplacer le comportement de mise à l'échelle DPI de Visual Studio.
- Évitez de définir des polices au niveau du conteneur.
- Amarrez les contrôles aux panneaux plutôt que directement aux UserControls.
- Lors de l'ajout dynamique de contrôles, mettez en pause et reprenez la mise en page.
- Conservez le AutoScaleMode des classes de base dérivées de ContainerControl comme Inherit.
- Définissez MinSize et MaxSize dans le code, pas dans le concepteur.
- Utilisez systématiquement un quai ou une ancre dans un conteneur.
- Conservez la taille du formulaire inférieure à 1000x680 dans le concepteur à 96 dpi pour éviter de recadrer lors de la mise à l'échelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!