Öncelikle, rasterleştirme ile teknik olarak gerçek çözünürlük bağımsızlığı diye bir şey olmadığını unutmayın. Yeterince yüksek büyütme ile tek tek dokular görünür olmaya başlayacaktır. Bunun tek çözümü bir vektör grafik sistemi yazmaktır.
Bununla birlikte, sağlam bir raster tabanlı çözünürlük bağımsız sistem oluşturmak için birkaç adım vardır: boyutlandırma, koordinat sistemleri ve düzen.
Boyutlandırma ve konumlandırma için, gerçek uygulama çözünürlüğüne oranı koruyan bazı birimler kullanmamız gerekir. Bu durumda inç kullanalım çünkü Amerikalıyım ve elemanları DPI (inç başına nokta sayısı) ile ölçeklendirebilirsiniz. Diyelim ki uygulamanız 800x600'de çalışıyor. Varsayılan Windows DPI 96'dır, yani uygulamanın (800/96) x (600/96) inç veya 8.33x6.25 inç çözünürlüğe sahip olduğu anlamına gelir.
En azından, hem 4: 3 hem de 16: 9 en boy oranlarıyla çalışabilmeniz gerektiğinden, ekran koordinat sisteminizi nasıl ele aldığınızı biraz zorlaştırır. Yapmayı tavsiye ettiğim şey (0,0) 'ı ekran alanının ortasına (pencereler ve kontroller) koymak. Bu işe yarar, çünkü bir köşeye (0,0) koyarsanız, o zaman çözünürlük ve en boy oranına göre köşe hareket ettikçe, tüm spritelarınızı çevirir, ekranın merkezi her zaman ekranın merkezi olur cihaz. Örneğimizi 800x600 ile sürdürmek, bu, (soldan sağa) -4.165in ila 4.165in ve (yukarıdan aşağı) 3.125in ila -3.125in arasında bir koordinat sistemi ile sonuçlanır.
Şu anda, ekranın merkezine göre her zaman aynı noktada olacak öğelerden bağımsız olarak bağımsız DPI kullanıcı arayüzüne sahipsiniz - çözünürlükten bağımsız değil. Neyse ki DPI bağımsızlığının yapmanıza izin verdiği şey, DPI'ı sezgisel olarak baz alarak ölçeklendirmektir. Örneğin buluşsal yöntem olarak dikey çözünürlüğü kullanarak DPI'yi ölçeklendirebiliriz. 800x600 96 DPI ise 1024x768 için 123 DPI veya 1280x720 için 115 DPI kullanırız.
Son olarak, hem mutlak konumlandırmayı hem de göreceli konumlandırmayı işleyen bir düzen sistemi oluşturmanız gerekecektir. Bunun mükemmel örnekleri WPF ve web'dir. Denetimlerin / kutuların, diğer birçok yararlı otomatik mizanpaj seçeneğiyle birlikte bir kenara kenetlenirken üst öğenin% bir kısmını doldurduğunu belirtebilirsiniz. Tüm bunlar birlikte, birçok farklı çözünürlük ve en boy oranlarında neredeyse aynı görünebilen bir UI sistemi ile sonuçlanacaktır.
Özetlemek gerekirse, sol üst köşedeki koordinat sisteminde bir başlangıç noktası olması ve DPI'yi dikey çözünürlüğe göre otomatik olarak ölçeklendirmemesi dışında neredeyse tüm bunları yaptığı için WPF'yi incelemenizi şiddetle tavsiye ederim.