티스토리 뷰



컴퓨터 한대로 모니터 두개를 사용하는 듀얼모니터 사용 환경이 일반화되면서 C# 개발자 입장에서도 다중 모니터 환경에 대한 처리를 해야 하는 경우가 생겼습니다. 증권 트레이딩을 하시는 분들이나 공장의 모니터링 환경에서는 모니터 4대를 연결할 수 있는 그래픽 카드를 장착해서 컴퓨터 한대로 4개의 모니터를 사용하기도 합니다.

Screen[] screens = Screen.AllScreens;
if (screens.Length > 1)     // Has more screen
{
    Screen scrn = (screens[0].WorkingArea.Contains(this.Location)) 
                             ? screens[1] : screens[0];
    dualscr.Show();
    dualscr.Location = new System.Drawing.Point(scrn.Bounds.Left, 0);
    dualscr.WindowState = FormWindowState.Maximized;
}

위의 코드는 듀얼모니터 환경을 감지해서 현재 출력하는 화면과는 다른 모니터에 별도의 창을 띄우는 예제입니다.



System.Windows.Forms.Screen 클래스의 AllScreens에는 현 시스템의 모든 화면 장치의 목록 정보가 담겨 있으므로 목록의 개수로 단일 모니터인지 듀얼 모니터인지, 쿼드 모니터인지를 판별할 수 있습니다. 각 화면 장치의 정보에는 위의 그림과 같이 해상도, 위치, 장치명등을 포함하고 있으며 별도의 창을 보조 화면에 출력하는 과정은 화면 장치의 위치(Bounds)를 참조해서 조정하는 것으로 이루어 집니다.


현재 화면의 위치(this.Location)가 어떤 모니터에 표시되고 있는지는 화면 장치 정보의 WorkingArea.Contains로 인식할 수 있습니다. 창을 보조 화면에 출력한 다음에 크기를 최대화시키면 해당 모니터의 최대 크기로 조정 됩니다.




댓글
댓글쓰기 폼