平面图扫描图像到屏幕像素调整

时间:2013-06-19 23:18:30

标签: c# winforms screen-resolution pixels

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

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

1 个答案:

答案 0 :(得分:1)

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

在计算机上,您只能在第一个象限上工作而且它是颠倒的,这意味着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;
}