듀얼 모니터에서 WPF의 창을 배치하기 위해서는 약간의 꼼수가 필요하다.
기존의 닷넷 프로그래밍에서는
System.Windows.Forms.SystemInformation.MonitorCount를 이용해서
현재 시스템에 장착된 모니터의 갯수를 알 수 있었다.
또 해당되는 모니터의 상세한 정보를 얻고자 할 경우에는
System.Window.Forms.Screen.AllScreens[index].WorkingArea;와 같이 해당되는 모니터의
정보를 알아낼 수 있었다.
하지만 WPF에서는 기본적으로 모니터와 관련된 속성이나 기능을 추가로
제공되지 않는 것 같다.
실제로 몇몇 경우에는 듀얼 모니터를 활용하는 경우가 많고 또 개발시에도
듀얼 모니터를 이용하는 경우가 많기 때문에 WPF Application의 출력 모니터 지정은
꼭 필요한 기능중에 하나이다.
따라서 약간의 꼼수를 이용해서 이와 같은 상황을 해결할 수 있다.
fullScreenWindow.WindowStartupLocation = WindowStartupLocation.Manual;
System.Drawing.Rectangle workingArea = System.Windows.Forms.Screen.AllScreens[1].WorkingArea;
fullScreenWindow.Left = workingArea.Left;
fullScreenWindow.Top = workingArea.Top;
fullScreenWindow.Width = workingArea.Width;
fullScreenWindow.Height = workingArea.Height;
fullScreenWindow.WindowState = WindowState.Maximized;
fullScreenWindow.WindowStyle = WindowStyle.None;
fullScreenWindow.Topmost = true;
fullScreenWindow.Show();
WindowStartupLocation을 메뉴얼로 지정해야 위치를 지정하기 용의하며 위의 소스의 핵심은
System.Drawing.Rectangle workingArea = System.Windows.Forms.Screen.AllScreens[1].WorkingArea; 이다.
AllScreens[1]이라고 했기 때문에 이는 Primary Monitor가 아닌 Second Monitor의 정보를 가져와서 임시라 Ractangle을 하나 생성하고 이 정보를 바탕으로 출력하려고 하는 WPF Window를 셋팅하는 것이다.
원리는 간단한데 이 같은 생각을 해내기 까지가 힘든 과정이다. ^^
C# 에서 Timer 사용할 때 주의할 점. (0) | 2017.01.02 |
---|---|
세가지 Timer 와 그 차이점 (0) | 2017.01.02 |
명명 규칙 (Naming Rule) (0) | 2016.10.06 |
시간 구하기 Ticks (0) | 2016.07.12 |
.NET CLR Project 만들기 샘플(음력/양력변환) (0) | 2016.02.26 |