[C#/WPF] 1차 디스플레이(1번 화면)의 전체 크기/작업 영역의 크기를 얻는다

6902 단어 C#WPF
모쿠지
h tps:// 퀵했다. 작은 m / 절 1707 / MS / 4f입니다 73D86 그림 d283 그림 C4f

하고 싶은 일



앱이 시작되면 모니터의 크기에 맞게 윈도우의 크기를 조절하고 싶습니다.
이를 위해 지금 모니터의 크기를 얻고 싶습니다.

방법


SystemParameters 클래스의, WorkArea.Width/WorkArea.Height 혹은 PrimaryScreenWidth/PrimaryScreenHeight 를 사용한다.


사용하는 것
내용


SystemParameters.WorkArea.WidthSystemParameters.WorkArea.Height
기본 모니터 작업 영역의 너비와 높이

SystemParameters.PrimaryScreenWidthSystemParameters.PrimaryScreenHeight
기본 모니터 전체의 폭과 높이


실험①



어떤 값을 취할 수 있는지 보자.

모니터의 배열


1 번 모니터 (기본 모니터) 설정


2번 모니터의 설정(해상도는 1번과 같고, 125%로 되어 있다)


코드
private void Button_Click(object sender, RoutedEventArgs e)
{
    var w = SystemParameters.WorkArea.Width;
    var h = SystemParameters.WorkArea.Height;
    var pw = SystemParameters.PrimaryScreenWidth;
    var ph = SystemParameters.PrimaryScreenHeight;
    AddLog("WorkArea      幅:" + w + "高さ:" + h);
    AddLog("PrimaryScreen 幅:" + pw + "高さ:" + ph);
}

〇결과

→1번 디스플레이는, 100% 설정이므로, 모니터의 해상도의 값 그대로.

〇 1차 디스플레이를 우측의 디스플레이로 하여 실행한 결과

→2번 디스플레이는 125% 설정이므로 각각 1920/1.25, 1080/1.25의 값이 되었다.
또, 앱은 1차로 설정한 디스플레이 쪽에 표시되었다.

실험②



실험①은 태스크바를 '자동으로 숨기도록' 실시하고 있었으므로 숨기지 않도록 하여 항상 표시되도록 하고 나서 실시해 본다. (1번 디스플레이, 100%로 실시)

〇결과
태스크바의 분만큼, WorkArea 쪽의 세로의 값이 작아졌다.
PrimaryScreenWidth와 Height는 변함없이.


※작업바를 위로 펼쳐 주거나 하면 그만큼 WorkArea의 값은 줄어드는 모습.
아래의 값은 작업 표시줄을 화면의 하반부까지 펼쳤을 때의 숫자.


실험③



자신의 앱의 윈도우 크기를 화면의 크기에 맞게 조정해 본다.
(시험에 기본 모니터의 중간에 모니터 작업 영역의 크기의 3/4 크기의 창을 내려 봅니다)
private void Button_Click_1(object sender, RoutedEventArgs e)
{
    var screen_width = SystemParameters.WorkArea.Width;
    var screen_height = SystemParameters.WorkArea.Height;

    this.Width = screen_width * (3.0 / 4.0);
    this.Height = screen_height * (3.0 / 4.0);

    this.Top = screen_height * ((1.0 / 4.0) / 2.0);
    this.Left = screen_width * ((1.0 / 4.0) / 2.0);
}

좋은 웹페이지 즐겨찾기