Denken Sie zunächst daran, dass es bei der Rasterung technisch gesehen keine echte Unabhängigkeit von der Auflösung gibt. Bei ausreichend hoher Vergrößerung werden einzelne Texel sichtbar. Die einzige Lösung hierfür besteht darin, ein Vektorgrafiksystem zu schreiben.
Abgesehen davon gibt es einige Schritte zum Erstellen eines robusten, rasterbasierten, auflösungsunabhängigen Systems: Größe, Koordinatensysteme und Layout.
Für die Dimensionierung und Positionierung müssen einige Einheiten verwendet werden, die ein Verhältnis zur tatsächlichen Anwendungsauflösung beibehalten. In diesem Fall können Sie Zoll verwenden, da ich Amerikaner bin und Sie Elemente mit DPI (Punkte pro Zoll) skalieren können. Angenommen, Ihre Anwendung wird mit 800 x 600 ausgeführt. Die Standard-Windows-DPI ist 96, dh die Anwendung hat eine Auflösung von (800/96) x (600/96) Zoll oder 8,33 x 6,25 Zoll.
Da Sie zumindest mit den Seitenverhältnissen 4: 3 und 16: 9 arbeiten müssen, wird der Umgang mit Ihrem Bildschirmkoordinatensystem etwas schwierig. Ich empfehle, (0,0) in die Mitte des Anzeigebereichs (sowie in Fenster und Steuerelemente) zu setzen. Dies funktioniert gut, denn wenn Sie (0,0) in eine Ecke einfügen, werden alle Ihre Sprites übersetzt, wenn sich diese Ecke basierend auf Auflösung und Seitenverhältnis bewegt, während die Mitte des Bildschirms immer die Mitte des Bildschirms Nr. 1 ist egal das Gerät. Wenn wir unser Beispiel mit 800 x 600 fortsetzen, würde dies zu einem Koordinatensystem führen, das (von links nach rechts) -4,165 Zoll bis 4,165 Zoll und (von oben nach unten) 3,125 Zoll bis -3,125 Zoll beträgt.
Im Moment haben Sie also ein DPI-unabhängiges UI-System mit Elementen, die sich immer an derselben Stelle relativ zur Bildschirmmitte befinden - nicht ganz auflösungsunabhängig. Glücklicherweise können Sie mit der DPI-Unabhängigkeit die Benutzeroberfläche skalieren, indem Sie die DPI anhand einer Heuristik skalieren. Zum Beispiel können wir DPI mit vertikaler Auflösung als Heuristik skalieren. Wenn 800 x 600 96 DPI ist, verwenden wir 123 DPI für 1024 x 768 oder 115 DPI für 1280 x 720.
Zuletzt müssen Sie ein Layoutsystem erstellen, das sowohl die absolute als auch die relative Positionierung übernimmt. Hervorragende Beispiele hierfür sind WPF und das Web. Sie können festlegen, dass Steuerelemente / Felder einige% des übergeordneten Elements ausfüllen, während Sie es zusammen mit vielen anderen nützlichen automatischen Layoutoptionen an eine Kante andocken. All dies zusammen führt zu einem UI-System, das über viele verschiedene Auflösungen und Seitenverhältnisse hinweg nahezu identisch aussehen kann.
Zusammenfassend kann ich Ihnen nur empfehlen, WPF zu studieren, da es fast alles tut, außer dass es einen Ursprung im Koordinatensystem der oberen linken Ecke beibehält und DPI nicht automatisch basierend auf der vertikalen Auflösung skaliert.