먼저 래스터 화를 수행 할 때 기술적으로 진정한 해상도 독립성은 존재하지 않습니다. 충분히 높은 배율로 개별 텍셀이 보이기 시작합니다. 이에 대한 유일한 해결책은 벡터 그래픽 시스템을 작성하는 것입니다.
그러나 강력한 래스터 기반 해상도 독립 시스템 (사이징, 좌표 시스템 및 레이아웃)을 만드는 몇 가지 단계가 있습니다.
크기 조정 및 위치 지정을 위해서는 실제 응용 프로그램 해상도에 대한 비율을 유지하는 일부 장치 세트를 사용해야합니다. 이 경우 내가 미국인이기 때문에 인치를 사용할 수 있으며 DPI (인치당 도트 수)로 요소의 크기를 조정할 수 있습니다. 예를 들어 응용 프로그램이 800x600에서 실행되고 있다고 가정합니다. 기본 Windows DPI는 96이므로 응용 프로그램의 해상도는 (800/96) x (600/96) 인치 또는 8.33x6.25 인치입니다.
화면 좌표계를 처리하는 방법을 최소한 4 : 3 및 16 : 9 종횡비로 작업 할 수 있어야하므로 약간 까다로워집니다. 내가 권장하는 것은 디스플레이 영역의 중앙 (창과 컨트롤뿐만 아니라)에 (0,0)을 두는 것입니다. 모서리에 (0,0)을 넣으면 해당 모서리가 해상도와 종횡비에 따라 움직일 때 모든 스프라이트를 변환하는 반면 화면의 중심은 항상 화면의 중심이되기 때문에 잘 작동합니다. 장치 문제. 800x600으로 예제를 계속하면 좌표계는 (왼쪽에서 오른쪽) -4.165in에서 4.165in, (위에서 아래로) 3.125in에서 -3.125in입니다.
따라서 현재 해상도와 무관하게 화면 중앙에 대해 항상 같은 위치에있는 항목이있는 DPI 독립 UI 시스템이 있습니다. 다행히 DPI 독립성을 통해 할 수있는 일은 휴리스틱을 기반으로 DPI를 조정하여 UI를 조정하는 것입니다. 예를 들어 휴리스틱으로 수직 해상도를 사용하여 DPI를 확장 할 수 있습니다. 800x600이 96 DPI이면 1024x768에 123 DPI를, 1280x720에 115 DPI를 사용합니다.
마지막으로 절대 위치와 상대 위치를 모두 처리하는 레이아웃 시스템을 구축해야합니다. 이것의 훌륭한 예는 WPF와 웹입니다. 컨트롤 / 상자가 다른 많은 유용한 자동 레이아웃 옵션과 함께 가장자리에 고정되는 동안 부모 요소의 일부를 채우도록 지정할 수 있습니다. 이 모든 기능을 통해 UI 시스템은 다양한 해상도와 종횡비에서 거의 동일하게 보일 수 있습니다.
요약하면 왼쪽 위 모서리 좌표계에서 원점을 유지하고 수직 해상도를 기반으로 DPI를 자동으로 조정하지 않는 것을 제외하고는 거의 모든 것을 수행하므로 WPF를 연구하는 것이 좋습니다.