제어판에서 설정 한 해상도와 내 와이드 스크린 노트북의 Screen.Bounds 출력 사이에 흥미로운 차이가 있습니다. 화면은 15.5입니다 "하고 제어판을 통해 설정 한 해상도는 1920 × 1080이다. 그러나 나는이 같은 일부 코드를 실행하면.화면 해상도가 Screen.Bounds가 일치하지 않습니다.
이Screen[] screens = Screen.AllScreens;
foreach (Screen scr in screens)
{
Console.WriteLine("Width: " + scr.Bounds.Width + ", Height: " + scr.Bounds.Width);
}
출력은 1536x864되는 내 해상도가. 좀 둘러보고했을 표시하고 나는 그것을 생각 DPI 문제와 관련이있을 수 있으며 디스플레이 설정을 볼 때 슬라이더 (Windows 8.1)가 중간에 있고 "모든 디스플레이에 하나의 크기 조정 레벨을 선택하게하십시오"라는 확인란이 선택 취소되어 있습니다 . 나는 현재의 DPI 설정을 얻기 위해이 작은 코드를 실행했습니다.
float dpiX, dpiY;
Graphics graphics = new System.Windows.Forms.Form().CreateGraphics();
Console.WriteLine("DPI: " + graphics.DpiX);
100 % DPI의 setti은 나의 이해로하는 96.0입니다 반환되는 DPI를 ng (아무런 확대 나 그게 뭐든간에). 내가보기에 이상하게 여겨지는 것은 Screen에 의해 반환 된 경계가 내 실제 해상도의 정확히 80 %이기 때문에 내 DPI가 100 (또는 125 %)으로 설정되어 있다고 생각하지만 실제로는 그렇지 않습니다. 보조 모니터가 제어판을 통한 해상도와 동일한 경계를 가지기 때문에이 문제는 노트북 화면에서만 발생합니다. 이는 내 DPI 설정이 디스플레이를 서로 독립적으로 설정하지 않기 때문에 (확인란이 선택됨)? 약간의 배경 지식으로 현재 화면을 가져 와서 reddit에서 그림을 가져 와서 서로 독립적으로 화면에 맞출 수있는 도구를 쓰고 있습니다. 따라서 어떤 솔루션을 사용하든 각 디스플레이의 해상도를 올바르게 가져야합니다.
첫 번째 코드 예제에서'scr.Bounds..Primary'는 실제로'scr.Bounds.Height'이어야한다고 생각하십니까? –
"모든 디스플레이에 하나의 스케일링 레벨을 선택하게하십시오"가 ** 선택 해제되어 ** 확실한 경우 각 스크린마다 다른 DPI가 설정되어 있습니까? –
@StevenRands가 예제를 수정했으며 그 경우라고 생각 하겠지만,이 상자를 선택하지 않으면 두 화면의 DPI가 여전히 96.0입니다. DPI를받는 방식에 뭔가 잘못하고 있습니까? –