Определите коэффициент увеличения дисплея с помощью VB. NET или C# - PullRequest
0 голосов
/ 12 апреля 2020

Я написал приложение, которое использует пользовательский элемент управления, генерирующий и отображающий расширенные метафайлы на картинках. Это прекрасно работает при отображении форм приложения на P C, на котором запущено приложение. Это необходимо для удаленного входа в систему P C с помощью Windows удаленного входа. В этом случае разрешение дисплея и коэффициент увеличения (можно установить на 100%, 125%, 150% ...) могут изменяться для приложения во время его работы. Я обнаружил, что изменение разрешения экрана не приводит к просмотру графики в неправильном размере. Но изменение коэффициента увеличения приводит к просмотру графики неправильного размера в соответствии с коэффициентом увеличения.

Я ищу решение для определения «коэффициента увеличения». Это помогло бы решить проблему устойчиво.

Я уже искал часы, чтобы найти что-то, что помогает, но не удалось:

  • Чтение разрешения делает не помогло: Dim test As Graphics = MyControl.CreateGraphics Dim Resolution As Single = test.DpiX ' Returns 96 under all conditions Я также попробовал некоторые API-вызовы с тем же результатом (всегда 96 DPI).

  • Включение / отключение DPI-осведомленности не помогло.

  • Чтение разрешения экрана может помочь найти фактор, но этого также недостаточно, поскольку невозможно различить guish между изменениями разрешения и изменениями увеличения.

       System.Windows.SystemParameters.PrimaryScreenWidth   ' Value is updated only when starting the app
       Screen.PrimaryScreen.Bounds.Width   ' Value updated, but depends on resolution setting and magnification setting
       System.Windows.SystemParameters.PrimaryScreenWidth / Screen.PrimaryScreen.Bounds.Width ' Factor useless
    
...