1

我正在尝试在 c# 中开发基于 Windows 窗体的应用程序。该表单有一个图像控件,它有一个平面图的扫描图像。我从真实地板的用户那里得到 x 和 y 坐标,我想在图像的同一位置画一个小圆圈。这是在地图上显示用户的位置。

问题是我们不能将真实世界的坐标等同于屏幕像素。所以我们需要得到一个调整公式。是否有任何调整公式,或者我们通过反复试验来做到这一点。此外,如果我们以某种方式调整转换,它将基于当前的屏幕分辨率。是否有任何适合不同屏幕分辨率的调整公式,以便我们可以在任何分辨率的任何屏幕尺寸上运行应用程序。

4

1 回答 1

1

据我了解,您有一些缺乏坐标理解的问题。在现实世界中,我们将坐标平面视为形成 4 个象限的 X 线和 Y 线。

在计算机上,您只在第一象限工作,它是颠倒的,这意味着 origo (0,0) 是您的左上角。

因此,如果您不想在脑海中进行转换,请转换

public int computerX(int realWorldX)
{
    return realWorldX+(int)(ImageControl.Width/2);
}

public int computerY(int realWorldY)
{
    int Convert = realWorldY+(int)(ImageControl.Height/2);
    int Flip = ImageControl.Height - Convert;
    return Flip;
}

当您放置真实世界(1,1)时,您在程序中使用了其他一些坐标,从 25,25 的外观来看,您可以相乘,所以如果您想要真实世界 2,2,然后像这样写 50,50

public int computerX(int realWorldX)
{
    return (realWorldX+(int)(ImageControl.Width/2))*yourXOffset;
}

public int computerY(int realWorldY)
{
    int Convert = realWorldY+(int)(ImageControl.Height/2);
    int Flip = ImageControl.Height - Convert;
    return Flip*yourYOffset;
}
于 2013-06-20T00:08:02.323 回答