none
当系统的显示设置是放大125%的时候,应用程序能否自动处理鼠标点、窗体宽高的变化? RRS feed

  • 问题

  • 我的程序有一些代码涉及到鼠标坐标点、窗体宽高设置,原本一切正常的,可是我发现如果将显示设置中的"缩放"设置为125%之后,这些相关计算全部失灵,难道我需要根据系统缩放比率去重新计算这些坐标点和宽高数值吗?

    系统能够自动处理?


    da jia hao!

    2020年9月22日 3:51

全部回复

  • 你好,

    全部失灵是什么样的?你是如果获得鼠标坐标,以及设置窗体宽高的?我需要知道更多的信息,来重现你的问题。另外我是用以下代码获取鼠标坐标的:

    Point pointMouse = e.GetPosition(e.Device.Target);

    鼠标的坐标并没有受缩放比的影响。

    谢谢

    Daisy Tian


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年9月24日 3:49
  • 例如:

    System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width

    这个返回的是物理像素,而不是设备像素(假如显示器分辨率1920X1080,放大1.25倍之后,此时画面的宽高应该都是除以1.25的,我把它叫做“设备像素”,有点类似于手机上的开发概念)

    而对窗体的Left、Top属性赋值时,用到的却是“设备像素”,例如将Left设置为200,此时窗体实际位置位于屏幕物理像素点的200X1.25=250处...

    而通过:Point p = e.GetPosition(this);获得的坐标点,也是“设备像素”,这些参数混合使用的时候都需要统一转换为一个标准(例如统一转为物理像素,或者统一转为设备像素),所以就给开发带来了困惑和不变。


    da jia hao!

    2020年9月28日 8:01
  • 你好,

    我测试了,的确如你所说,这可能是WPF设计的问题,你可以到Developer Community去提出这个问题,可能会得到更好的解决方案。

    谢谢

    Daisy Tian


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2020年9月29日 8:55