我正在尝试在c#中开发基于Windows窗体的应用程序。表单具有图像控件,并且具有平面图的扫描图像。我从真实地板的用户那里得到x和y坐标,我想在图像的同一位置画一个小圆圈。这显示了用户在地图上的位置。
问题是我们无法将真实世界坐标等同于屏幕像素。所以我们需要得到一个调整公式。是否有任何调整公式或我们通过反复试验来做。此外,如果我们以某种方式调整转换,它将基于当前的屏幕分辨率。是否有适合不同屏幕分辨率的调整公式,以便我们可以在任何屏幕尺寸上以任何分辨率运行应用程序。
答案 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;
}