Innanzitutto, tieni presente che tecnicamente con la rasterizzazione non esiste una vera indipendenza della risoluzione. Con un ingrandimento sufficientemente elevato, i singoli tex inizieranno a diventare visibili. L'unica soluzione a questo è scrivere un sistema di grafica vettoriale.
Detto questo, ci sono alcuni passaggi per creare un robusto sistema indipendente dalla risoluzione basata su raster: dimensionamento, sistemi di coordinate e layout.
Per il dimensionamento e il posizionamento è necessario utilizzare un insieme di unità che mantengono un rapporto con la risoluzione effettiva dell'applicazione. In questo caso, usiamo i pollici perché sono americano e puoi ridimensionare gli elementi con DPI (punti per pollice). Ad esempio, supponiamo che l'applicazione sia in esecuzione a 800x600. Il DPI di Windows predefinito è 96, quindi l'applicazione ha una risoluzione di (800/96) x (600/96) pollici o 8,33x6,25 pollici.
Dal momento che devi essere in grado di lavorare, almeno, con entrambi i rapporti di aspetto 4: 3 e 16: 9 come gestisci il tuo sistema di coordinate dello schermo diventa un po 'complicato. Quello che consiglio di fare è mettere (0,0) al centro dell'area di visualizzazione (oltre a finestre e controlli). Funziona bene perché se metti (0,0) in un angolo, allora mentre quell'angolo si sposta in base alla risoluzione e alle proporzioni, tradurrà tutti i tuoi sprite mentre il centro dello schermo sarà sempre il centro dello schermo no importa il dispositivo. Continuando il nostro esempio con 800x600, ciò comporterebbe un sistema di coordinate che è (da sinistra a destra) da -4,165 pollici a 4,165 pollici e (dall'alto verso il basso) da 3,125 pollici a -3,125 pollici.
Quindi al momento hai un sistema di interfaccia utente indipendente DPI con elementi che saranno sempre nello stesso punto rispetto al centro dello schermo - non del tutto indipendenti dalla risoluzione. Fortunatamente ciò che l'indipendenza DPI ti consente di fare è ridimensionare l'interfaccia utente ridimensionando DPI in base a qualche euristica. Ad esempio, possiamo ridimensionare DPI usando la risoluzione verticale come nostra euristica. Se 800x600 è 96 DPI, utilizzeremo 123 DPI per 1024x768 o 115 DPI per 1280x720.
Infine, dovrai costruire un sistema di layout che gestisca sia il posizionamento assoluto sia il posizionamento relativo. Esempi eccellenti di questo sono WPF e il web. Puoi specificare che i controlli / le caselle riempiono una parte dell'elemento genitore mentre lo ancorano a un bordo insieme a molte altre utili opzioni di layout automatico. Tutto questo insieme si tradurrà in un sistema di interfaccia utente in grado di apparire quasi identico in molte risoluzioni e proporzioni diverse.
Per riassumere, ti consiglio vivamente di studiare WPF poiché fa quasi tutto questo tranne che mantiene un'origine nel sistema di coordinate dell'angolo in alto a sinistra e non ridimensiona automaticamente DPI in base alla risoluzione verticale.