Maison >développement back-end >C++ >Comment puis-je optimiser la mise à l'échelle du contrôle WinForms pour l'ajustement automatique dans les environnements à haute résolution ?

Comment puis-je optimiser la mise à l'échelle du contrôle WinForms pour l'ajustement automatique dans les environnements à haute résolution ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-19 08:26:10328parcourir

How Can I Optimize WinForms Control Scaling for Auto-Adjustment in High-DPI Environments?

Mise à l'échelle du contrôle WinForms : pour un ajustement automatique optimal dans les environnements à haute résolution

Bien qu'il soit généralement admis que WinForms a des capacités de mise à l'échelle automatique limitées dans les environnements à haute résolution, en fait, .NET 2.0 et versions ultérieures ont considérablement amélioré ses capacités de mise à l'échelle automatique. Cependant, pour profiter pleinement de ces améliorations, les développeurs doivent suivre certaines directives de conception.

Contrôles qui ne prennent pas en charge la mise à l'échelle automatique

Certains contrôles ont des limites en termes de mise à l'échelle :

  • Étiquette : Si l'attribut AutoSize est désactivé et que la police est une police héritée, définissez explicitement l'attribut Font pour éviter les erreurs de mise à l'échelle.
  • ListView : Remplacez la méthode ScaleControl du formulaire pour gérer les ajustements de largeur de colonne.
  • SplitContainer : Évitez de définir les attributs Panel1MinSize, Panel2MinSize et SplitterDistance.
  • TextBox : Si l'attribut MultiLine est activé et que la police est une police héritée, définissez explicitement l'attribut Font.
  • ToolStripButton : Ajuste CreateGraphics.DpiX en fonction de .DpiY et ToolStrip.ImageScalingSize.
  • PictureBox : Assurez-vous que l'attribut SizeMode est défini sur Zoom ou StretchImage.
  • TreeView : Définit CreateGraphics.DpiX en fonction de .DpiY et ImageList.ImageSize.
  • Formulaire : Redimensionnez manuellement le formulaire après avoir créé un formulaire de taille fixe.

Directives de conception

1. Contrôle des conteneurs

  • Définit la propriété AutoScaleMode de tous les contrôles de conteneur sur Font.
  • En supposant 96 dpi et la police MS Sans Serif par défaut, attribuez l'attribut AutoScaleDimensions à new System.Drawing.SizeF(6F, 13F) (ajustez si nécessaire).

2. Configuration du concepteur

  • Conception à 96 dpi. Remplacez le comportement de mise à l’échelle DPI élevé par « Système » dans Visual Studio.
  • Assurez-vous que la propriété AutoSize du contrôle conteneur est activée.

3. Gestion des polices

  • Définissez la propriété Font uniquement au niveau du contrôle feuille ou dans le constructeur du formulaire de base (pour les valeurs par défaut à l'échelle de l'application).
  • Modifier Font dans le formulaire de base recalculera AutoScaleDimensions ; mettra à jour le fichier du concepteur en conséquence.

4. Amarrage et ancrage

  • Évitez d'ancrer les contrôles directement aux UserControls ; utilisez plutôt un panneau ou un autre conteneur.
  • Utilisez l'attribut Dock au lieu de Anchor Right ou Bottom.

5. Contrôles ajoutés dynamiquement

  • Suspendez la mise en page avant d'ajouter des contrôles dynamiques, définissez AutoScaleDimensions et AutoScaleMode, puis reprenez la mise en page.

6. Classe de base et AutoScale

  • Les classes de base héritées doivent avoir leur attribut AutoScaleMode défini sur Inherit. Le définir sur toute autre valeur peut désactiver la mise à l’échelle automatique.

7. Limite de taille de fenêtre

  • Évitez d'utiliser des attributs MaxSize statiques. Définissez OnLoad et MinSize sur les dimensions mises à l'échelle dans le constructeur ou l'événement MaxSize.
  • Assurez-vous que la taille du formulaire ne dépasse pas 1000x680 ClientSize (994x642 dans le concepteur).

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:
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