Trước tiên hãy nhớ rằng với rasterization về mặt kỹ thuật không có gì gọi là độc lập độ phân giải thực sự. Với độ phóng đại đủ cao, các texels riêng lẻ sẽ bắt đầu hiển thị. Giải pháp duy nhất cho việc này là viết một hệ thống đồ họa vector.
Điều đó đang được nói có một vài bước để tạo ra một hệ thống độc lập độ phân giải dựa trên raster mạnh mẽ: kích thước, hệ thống tọa độ và bố cục.
Để định cỡ và định vị, chúng ta cần sử dụng một số bộ đơn vị duy trì tỷ lệ với độ phân giải ứng dụng thực tế. Trong trường hợp này, hãy sử dụng inch vì tôi là người Mỹ và bạn có thể chia tỷ lệ các phần tử bằng DPI (số chấm trên mỗi inch). Ví dụ: giả sử ứng dụng của bạn đang chạy ở 800x600. Windows DPI mặc định là 96 nên có nghĩa là ứng dụng có độ phân giải (800/96) x (600/96) inch hoặc 8,33x6,25 inch.
Vì bạn cần có khả năng làm việc với, ít nhất, cả hai tỷ lệ khung hình 4: 3 và 16: 9, cách bạn xử lý hệ thống tọa độ màn hình của bạn trở nên khó khăn một chút. Những gì tôi khuyên bạn nên làm là đặt (0,0) vào giữa khu vực hiển thị (cũng như các cửa sổ và điều khiển). Điều này hoạt động tốt bởi vì nếu bạn đặt (0,0) vào một góc thì khi góc đó di chuyển xung quanh dựa trên độ phân giải và tỷ lệ khung hình, nó sẽ dịch tất cả các họa tiết của bạn trong khi trung tâm của màn hình sẽ luôn là trung tâm của màn hình vấn đề thiết bị. Tiếp tục ví dụ của chúng tôi với 800x600, điều này sẽ dẫn đến một hệ tọa độ là (trái sang phải) -4.165in đến 4.165in và (từ trên xuống dưới) 3.125in đến -3.125in.
Vì vậy, tại thời điểm này, bạn có hệ thống UI độc lập DPI với các mục sẽ luôn ở cùng một vị trí so với trung tâm của màn hình - không hoàn toàn độc lập với độ phân giải. May mắn là những gì độc lập DPI cho phép bạn làm là mở rộng giao diện người dùng bằng cách nhân rộng DPI dựa trên một số heuristic. Ví dụ, chúng ta có thể chia tỷ lệ DPI bằng cách sử dụng độ phân giải dọc làm heuristic. Nếu 800x600 là 96 DPI thì chúng tôi sẽ sử dụng 123 DPI cho 1024x768 hoặc 115 DPI cho 1280x720.
Cuối cùng, bạn sẽ cần xây dựng một hệ thống bố trí xử lý cả định vị tuyệt đối cũng như định vị tương đối. Ví dụ tuyệt vời về điều này là WPF và web. Bạn có thể chỉ định rằng các điều khiển / hộp chứa một số% của phần tử cha trong khi cắm nó vào một cạnh cùng với nhiều tùy chọn bố trí tự động hữu ích khác. Tất cả những điều này cùng nhau sẽ dẫn đến một hệ thống UI có khả năng trông gần giống nhau qua nhiều độ phân giải và tỷ lệ khung hình khác nhau.
Tóm lại, tôi khuyên bạn nên nghiên cứu WPF vì nó thực hiện gần như tất cả điều này ngoại trừ việc nó duy trì nguồn gốc ở hệ tọa độ góc trên cùng bên trái và không tự động chia tỷ lệ DPI dựa trên độ phân giải dọc.