[WPF] 객체 정렬

지금 업데이트하고 있는 프로그램에서 파워포인트와 같은 객체 정렬 기능을 추가했습니다. 1. 앞으로 보내기 2. 맨 앞으로 보내기 3. 뒤로 보내기 4. 맨 뒤로 보내기 객체들은 리스트에 담겨 있으며 리스트의 맨 처음부터 화면에 표시되기 때문에 객체들이 서로 겹쳐지게 된다면 리스트 앞쪽에 있는 객체는 뒤쪽에 있는 객체로 가려지게 됩니다. 1 2 3 8 7 6 4 5 리스트 1 2 3 4 5 7 8 캔버스 그래서 가려지는 객체를 "맨 앞으로 보내기" 하려면 리스트의 맨 뒤로 이동 시켜주면 됩니다. 하지만 이렇게 하면 리스트가 변경되기 때문에 ZIndex 값을 통해 위 기능을 구현하려고 했습니다. 즉 ZIndex값을 가장 높게 설정하면 모든 객체들 앞에 표시됩니다. selected.ZIndex = objs.Max(x => x.ZIndex) + 1; 7번 객체를 "맨 앞으로 보내기" 하면 아래와 같이 됩니다. 1 2 3 8 7 6 4 5 리스트 1 2 4 5 3 7 8 캔버스 이렇게 작성하고 보니 ZIndex 값이 계속해서 커진다는 점이 자꾸 마음에 걸립니다. 한참 고민 끝에 ZIndex의 최대 값을 설정하기로 하고 그 값을 100으로 설정했습니다. 이렇게 ZIndex의 최대 값을 설정하고 나니 "맨 앞으로 보내기" 로 했을 때 제대로 작동하지 않는 경우가 발생할 수 있습니다. 어떤 객체의 ZIndex가 100이고 그 객체보다 리스트 상으로 앞에 있는 객체를 "맨 앞으로 보내기" 했을 때 둘 다 ZIndex가 100이지만 "맨 앞으로 보내기" 한 객체가 리스트 상으로 앞에 있기 때문에 기존 객체의 의해 가려질 수 있습니다. 1 2 3 8 7 6 4 5 리스트 1
최근 글