0

我编写了一个应用程序,它使用用户控件在图片框上生成和显示增强的元文件。当在运行应用程序的 PC 上显示应用程序的表单时,这可以正常工作。使用 Windows 远程登录远程登录此 PC 是必不可少的。在这种情况下,显示分辨率和放大系数(可以设置为 100%、125%、150% ……)可能会在应用程序运行时发生变化。我发现更改显示分辨率不会导致以错误的尺寸查看图形。但是更改放大系数会导致根据放大系数查看错误大小的图形。

我正在寻找一种解决方案来确定“放大系数”。这将有助于解决可持续的问题。

我已经搜索了几个小时以找到有用的东西,但没有成功:

  • 阅读分辨率并没有帮助: Dim test As Graphics = MyControl.CreateGraphics Dim Resolution As Single = test.DpiX ' Returns 96 under all conditions 我还尝试了一些 API 调用,结果相同(总是 96 DPI)。

  • 启用/禁用 DPI 意识没有帮助。

  • 阅读屏幕分辨率可以帮助找到一个因素,但这还不够,因为无法区分分辨率的变化和放大倍率的变化。

       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
    
4

0 回答 0