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
825 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!

source:php.cn
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