当前位置: 首页 > 知识库问答 >
问题:

如何创建一个与Windows7向后兼容的可缩放和大小更改的每个监视器的DPI感知应用程序?

霍书
2023-03-14

我对WPF(和DPI感知API)是新手,正在编写一个在Windows7、8.1和10中运行的应用程序。我使用多个监视器,每个监视器的DPI设置不同,我对使我的应用程序在桌面配置中尽可能兼容感兴趣。

我已经阅读了Dr.Dobbs的这篇文章和Kenny Karr的这篇文章,但我对API的理解不够好,无法让事情正常运行。

有没有人知道一种类似微软代码的方法,在Windows8.1和更新版本中,一个支持每个监视器的应用程序在监视器之间移动时实际上会改变大小,但在Windows7中作为系统支持运行?

共有1个答案

尉迟鑫鹏
2023-03-14

我没有看过代码,但我猜测崩溃是由于Win7中缺少本机方法造成的。解决这个问题的方法是修改本机方法包装器,例如(伪代码):

public int GetDPIOfMonitor(IntPtr monitorHandle)
{
   if (Enviroment.OSVersion >= "6.2") // win 8 and above
   {
      return NativeMethods.PInvoke.GetMonitorDPI(monitorHandle);
   }
   else return systemDPI;
}

这样您就不会在7下崩溃,因为您没有调用丢失的本机方法。

 类似资料:
  • 我试图在网站www.nhadatsonnghia.com的一篇文章中为图像创建一个放大/缩小功能。当一切正常工作时,出现了一个错误,即jquery只对第一个标记中的第一个图像起作用,并且后续每个标记中的图像无法放大/缩小。运行后,只有第一个图像具有style=“transform:scale(1);”类。 你可以看到它在这里工作 那么我应该如何修正放大/缩小每个div中的每个图像呢?如果你能建议我

  • 问题内容: 当我以纵向模式启动我的应用程序时,它可以正常工作。然后我旋转到风景中,并按比例放大。为了使其能够在横向模式下正确缩放,我必须双击某物两次,首先将其一直放大(正常的双击行为),然后再次将其完全缩小(再次是正常的双击行为)。 。缩小时,它会缩小到横向模式的正确新比例。 切换回人像似乎更一致。也就是说,它会处理缩放,以便在方向变回纵向时缩放比例正确。 我想弄清楚这是否是错误?还是这可以用Ja

  • 使用兼容的 Bluetooth® 传感器可增强您的训练体验,以及全面地认识您的表现。除了众多 Polar 传感器之外,手表还与多款第三方传感器完全兼容。 查看完整的兼容型 Polar 传感器和配件清单 查看兼容的第三方传感器 在使用新的传感器之前,必须将其与手表配对。配对只需几秒钟,请确保手表只接收来自传感器的信号,并允许小组中存在无干扰的训练。在进入活动或比赛之前,确保您已在家中进行过配对,防止

  • 使用兼容的 Bluetooth® 传感器可增强您的训练体验,以及全面地认识您的表现。除了众多 Polar 传感器之外,手表还与多款第三方传感器完全兼容。 查看完整的兼容型 Polar 传感器和配件清单 查看兼容的第三方传感器 在使用新的传感器之前,必须将其与手表配对。配对只需几秒钟,可以确保手表只接收来自传感器的信号,并允许在小组中进行无干扰训练。在进入活动或比赛之前,确保您已在家中进行过配对,防

  • 如果proto的枚举名发生更改,它是否向后兼容? 例如,我最初有这个: 我修改枚举定义为: ID_1的旧proto消息是否与从包含ID_3的消息编译的新解析器兼容?

  • 我已经将一个图像读入一个JLabel,并将该图像缩放到JLabel的大小,如下所示: 我使用提供的GroupLayout并将水平轴和垂直轴设置为“自动调整大小”(通过设计视图),这样每当我更改窗口大小时,JLabel的大小就会自动调整为JFrame的大小。 现在我想调整图像的大小和JLabel的大小,这里开始麻烦了。我添加了一个事件处理程序,它响应JFrame的大小调整,如下所示: 另外,如果我想