Я написал приложение, которое использует пользовательский элемент управления, генерирующий и отображающий расширенные метафайлы на картинках. Это прекрасно работает при отображении форм приложения на 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