window_get_visible_rects 함수 설명
window_get_visible_rects
함수는 각 연결된 디스플레이에서 (x1, y1)에서 (x2, y2)로 정의된 사각형의 겹치는 영역을 찾는 데 사용됩니다. 이 함수는 각 디스플레이에 대해 8개의 값을 포함하는 배열을 반환합니다. 예를 들어, 두 개의 디스플레이가 있는 경우 배열의 길이는 16이 됩니다. 반환되는 값은 다음과 같습니다:
- [0 ... 3]: 겹치는 영역의 좌표 (overlapx1, overlapy1, overlapx2, overlapy2)
- [4 ... 7]: 디스플레이의 좌표 (monitorx1, monitory1, monitorx2, monitory2)
겹치는 영역이 없을 경우, 값은 0, 0, 0, 0으로 설정됩니다. 이 함수는 저장된 창 위치가 화면에 보이는지 여부를 테스트하는 데 유용합니다. 예를 들어, 사용자가 외부 모니터를 분리했거나 창을 화면 밖으로 이동시킨 경우, 저장된 창 위치가 유효하지 않을 수 있습니다.
문법
window_get_visible_rects(x1, y1, x2, y2);
인수 설명
인수 | 유형 | 설명 |
---|---|---|
x1 | 숫자 | 확인할 사각형의 왼쪽 가장자리 |
y1 | 숫자 | 확인할 사각형의 위쪽 가장자리 |
x2 | 숫자 | 확인할 사각형의 오른쪽 가장자리 |
y2 | 숫자 | 확인할 사각형의 아래쪽 가장자리 |
반환값
- 배열: 각 디스플레이에 대한 겹치는 영역과 디스플레이 좌표 정보를 포함하는 배열
예제 코드
var wx = window_get_x();
var wy = window_get_y();
var ww = window_get_width();
var wh = window_get_height();
display_data = window_get_visible_rects(wx, wy, wx + ww, wy + wh);
display_num = array_length(display_data) / 8;
위의 코드는 display_data
변수에 디스플레이에 대한 정보를 포함하는 1D 배열을 생성하고, display_num
변수에 발견된 활성 디스플레이의 수를 저장합니다.
활용 예제
- 창 위치 확인: 사용자가 창을 이동했는지 확인하고, 창이 화면에 보이는지 여부를 판단할 수 있습니다.
gml var visible_rects = window_get_visible_rects(100, 100, 400, 300);
- 다중 모니터 지원: 여러 모니터에서 창의 위치를 조정할 때, 각 모니터의 겹치는 영역을 확인할 수 있습니다.
gml for (var i = 0; i < display_num; i++) { var overlap_x1 = display_data[i * 8 + 0]; var overlap_y1 = display_data[i * 8 + 1]; // 추가 처리 }
- 창 크기 조정: 창의 크기를 조정할 때, 겹치는 영역을 기반으로 적절한 크기로 조정할 수 있습니다.
gml if (display_data[0] != 0) { window_set_size(800, 600); }
- 창 위치 재설정: 창이 화면 밖으로 나갔을 경우, 기본 위치로 재설정할 수 있습니다.
gml if (display_data[0] == 0) { window_set_position(100, 100); }