안녕하세요. DPI 인식 애플리케이션을 구현하고 있습니다. 현재 해상도를 기반으로 창의 위치를 계산하고 싶습니다.TransformToDevice가 올바른 DPI 팩터를 윈도우에 반환하지 않습니다. 8.1
DPI 설정을 변경하면 OS가 다시 로그인을 요구하지 않는 Windows 8.1에서 아래 코드를 테스트했습니다. 즉시 DPI를 적용합니다. 내가 DPI가 로그 아웃하고 다시 로그인없이 mspanel를 사용하여 변경하는 경우
var presentationSource = PresentationSource.FromVisual(this);
transform = presentationSource.CompositionTarget.TransformToDevice;
int width = transform.m11 * SystemParameters.PrimaryScreenWidth;
int height = transform.M22* SystemParameters.PrimaryScreenHeight;
하지만, TransformToDevice()는 이전의 값 대신 새로운 하나를 반환합니다. DPI 설정이 변경되면이 변환 행렬이 변경 될 것이라고 생각했습니다.
DPI 설정이 변경 될 때 호출 할 방법이 있습니까?
로그 아웃/다시 로그인 한 후에도 작동합니까? – kennyzx
예, 로그 아웃하고 다시 로그인 한 후에 작동합니다. – user3106005
여기서 도와주세요. 올바른 DPI 값을 반환하거나 현재 해상도를 반환하는 다른 API가 있습니까? 다른 GetDeviceCaps(), GetSystemMatrics() 및 GetMonitorInfo()를 시도했지만 모두 로그 오프 전에 설정된 값을 반환하고 현재 설정된 값을 반환하지 않습니다. – user3106005