Autoskalierung von WinForms: Anpassung an Systemschriftarten und DPI-Einstellungen
Einführung
Frühere Rezensionen deuteten oft darauf hin, dass die Autoscaling-Fähigkeiten von WinForms denen von WPF unterlegen sind. Basierend auf den Recherchen und Tests des Autors hat sich die Autoscaling-Funktionalität von WinForms in .NET 2.0 jedoch deutlich verbessert.
Steuerung der Zoombegrenzung
Trotz Verbesserungen weisen einige Steuerelemente in WinForms immer noch Skalierungsbeschränkungen auf und sollten vermieden werden:
-
AutoSize = False und die Beschriftung der Schriftart erben: Legen Sie die Schriftart des Steuerelements im Eigenschaftenfenster explizit fest, sodass sie fett angezeigt wird.
-
ListView-Spaltenbreite: (überschreiben Sie ScaleControl des Formulars, um dieses Problem zu beheben)
- Panel1MinSize-, Panel2MinSize- und SplitterDistance-Eigenschaften von SplitContainer
-
MultiLine = True und TextBox erbt Schriftart: Legt explizit die Schriftart des Steuerelements fest.
-
Bild für ToolStripButton: Passen Sie ToolStrip.AutoSize und ToolStrip.ImageScalingSize im Konstruktor des Formulars an.
-
PictureBox.SizeMode muss auf Zoom oder StretchImage eingestellt sein.
-
Bilder für TreeView: Legen Sie ImageList.ImageSize basierend auf CreateGraphics.DpiX und .DpiY fest.
-
Formulargröße: Skalieren Sie ein Formular mit fester Größe nach der Erstellung manuell.
Auto-Scaling-Designleitfaden
Um eine korrekte automatische Skalierung in WinForms sicherzustellen, müssen die folgenden Richtlinien befolgt werden:
- Setzen Sie den AutoScaleMode aller ContainerControls auf Font.
- Setzen Sie die AutoScaleDimensions aller ContainerControls auf 6F, 13F unter der Annahme von 96 dpi und der Standardschriftart (MS Sans Serif).
- Arbeiten Sie mit 96 dpi und bearbeiten Sie Eigenschaften, um das DPI-Skalierungsverhalten von Visual Studio zu überschreiben.
- Vermeiden Sie das Festlegen von Schriftarten auf Containerebene.
- Docken Sie Steuerelemente an Panels an, anstatt direkt an UserControls.
- Wenn Sie Steuerelemente dynamisch hinzufügen, Layout anhalten und fortsetzen.
- Behalten Sie den AutoScaleMode der von ContainerControl abgeleiteten Basisklassen als Inherit bei.
- Definieren Sie MinSize und MaxSize im Code, nicht im Designer.
- Verwenden Sie stets Andocken oder Ankern innerhalb eines Containers.
- Behalten Sie die Formulargröße unter 1000 x 680 im Designer bei 96 dpi bei, um ein Beschneiden beim Skalieren zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie können WinForms-Steuerelemente ordnungsgemäß automatisch an die Systemschriftart und DPI-Einstellungen skaliert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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