WinForms Control.PointToScreen和高分辨率屏幕

时间:2020-06-04 11:51:06

标签: .net winforms coordinates screen highdpi

我使用如下代码在.NET Framework WinForms应用程序中绘制一条所谓的可逆线:

ControlPaint.DrawReversibleLine(
    PointToScreen(new Point(x, y1)),
    PointToScreen(new Point(x, y2)),
    Color.Black);

如果未在应用程序中打开high-dpi support,并且在高分辨率屏幕上启动了该应用程序,则xy1y2坐标来自鼠标事件,因为Windows dpi虚拟化使该应用程序在96 dpi屏幕上工作。但是,当我将这些数字传递给Control.PointToScreen()函数时,它将考虑屏幕的实际分辨率来处理它们。结果,我从PointToScreen获得的点被移至4K屏幕上屏幕的左上角。

有没有简单的方法可以解决此问题?请考虑到现代多显示器配置,其中每个显示器可能都有自己的分辨率。

0 个答案:

没有答案