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!