Heim > Backend-Entwicklung > C++ > Wie kann ich die Skalierung von WinForms-Steuerelementen für die automatische Anpassung in Umgebungen mit hohen DPI-Werten optimieren?

Wie kann ich die Skalierung von WinForms-Steuerelementen für die automatische Anpassung in Umgebungen mit hohen DPI-Werten optimieren?

Mary-Kate Olsen
Freigeben: 2025-01-19 08:26:10
Original
378 Leute haben es durchsucht

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

WinForms-Steuerelementskalierung: für optimale automatische Anpassung in Umgebungen mit hoher DPI

Obwohl allgemein davon ausgegangen wird, dass WinForms in Umgebungen mit hohen DPI-Werten über begrenzte Autoskalierungsfunktionen verfügt, haben .NET 2.0 und höher seine Autoskalierungsfunktionen tatsächlich erheblich verbessert. Um diese Verbesserungen jedoch optimal nutzen zu können, müssen Entwickler bestimmte Designrichtlinien befolgen.

Steuerelemente, die keine automatische Skalierung unterstützen

Einige Steuerelemente haben Einschränkungen bei der Skalierung:

  • Label: Wenn das Attribut AutoSize deaktiviert ist und es sich bei der Schriftart um eine geerbte Schriftart handelt, legen Sie das Attribut Font explizit fest, um Skalierungsfehler zu verhindern.
  • ListView: Überschreiben Sie die ScaleControl-Methode des Formulars, um Spaltenbreitenanpassungen zu verarbeiten.
  • SplitContainer: Vermeiden Sie das Festlegen der Attribute Panel1MinSize, Panel2MinSize und SplitterDistance.
  • TextBox: Wenn das MultiLine-Attribut aktiviert ist und die Schriftart eine geerbte Schriftart ist, legen Sie das Font-Attribut explizit fest.
  • ToolStripButton: Passt CreateGraphics.DpiX basierend auf .DpiY und ToolStrip.ImageScalingSize an.
  • PictureBox: Stellen Sie sicher, dass das SizeMode-Attribut auf Zoom oder StretchImage gesetzt ist.
  • TreeView: Legt CreateGraphics.DpiX basierend auf .DpiY und ImageList.ImageSize fest.
  • Formular: Skalieren Sie das Formular manuell, nachdem Sie ein Formular mit fester Größe erstellt haben.

Designrichtlinien

1. Containerkontrolle

  • Setzt die Eigenschaft AutoScaleMode aller Containersteuerelemente auf Font.
  • Unter der Annahme von 96 dpi und der Standardschriftart MS Sans Serif weisen Sie AutoScaleDimensions das Attribut new System.Drawing.SizeF(6F, 13F) zu (passen Sie es bei Bedarf an).

2. Designer-Konfiguration

  • Design mit 96 dpi. Überschreiben Sie das Verhalten bei hoher DPI-Skalierung in Visual Studio auf „System“.
  • Stellen Sie sicher, dass die Eigenschaft AutoSize des Containersteuerelements aktiviert ist.

3. Schriftartenverwaltung

  • Legen Sie die Eigenschaft Font nur auf der Blattkontrollebene oder im Konstruktor des Basisformulars fest (für anwendungsweite Standardeinstellungen).
  • Durch Ändern von Font im Basisformular wird AutoScaleDimensions die Designerdatei entsprechend aktualisiert.

4. Anlegen und Ankern

  • Vermeiden Sie die direkte Verankerung von Steuerelementen in UserControls; verwenden Sie stattdessen ein Panel oder einen anderen Container.
  • Verwenden Sie das Attribut Dock anstelle von Anchor Right oder Bottom.

5. Dynamisch hinzugefügte Steuerelemente

  • Layout anhalten, bevor dynamische Steuerelemente hinzugefügt werden, AutoScaleDimensions und AutoScaleMode festlegen und dann mit dem Layout fortfahren.

6. Basisklasse und AutoScale

  • Bei geerbten Basisklassen sollte das Attribut AutoScaleMode auf Inherit gesetzt sein. Wenn Sie einen anderen Wert festlegen, wird die automatische Skalierung möglicherweise deaktiviert.

7. Fenstergrößenbeschränkung

  • Vermeiden Sie die Verwendung statischer MaxSize Attribute. Legen Sie OnLoad und MinSize auf die skalierten Dimensionen im Konstruktor oder im MaxSize-Ereignis fest.
  • Stellen Sie sicher, dass die Größe des Formulars 1000 x 680 ClientSize (994 x 642 im Designer) nicht überschreitet.

Das obige ist der detaillierte Inhalt vonWie kann ich die Skalierung von WinForms-Steuerelementen für die automatische Anpassung in Umgebungen mit hohen DPI-Werten optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage