Maison > développement back-end > C++ > Comment les contrôles WinForms peuvent-ils être correctement adaptés automatiquement aux paramètres de police système et DPI ?

Comment les contrôles WinForms peuvent-ils être correctement adaptés automatiquement aux paramètres de police système et DPI ?

Mary-Kate Olsen
Libérer: 2025-01-19 08:16:08
original
893 Les gens l'ont consulté

How Can WinForms Controls Be Properly Auto-Scaled to System Font and DPI Settings?

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal