获取位图中两点之间的像素数

时间:2011-05-24 10:38:15

标签: c# .net

我是C#.NET的初学者。我正处理一个处理进近地图的项目。这张地图包含了跑道的周围区域,飞行可以在那里飞行以降落。 这张地图是一张位图image.it包含图像边框的经度和纬度!

现在该项目的目的是根据地图边界上给定的地质坐标获取地图上的点的地质坐标(拉/长)(当通过鼠标点击或悬停在该点上时)。 .so如果我们为具有拉特/长坐标的点提供输入,则可以插入地图上的其他点。

假设任意两个经度之间有X个像素,任意两个纬度之间有Y个像素。如果我们设置一个参考点,那么取决于像素的距离(x和y方向上距参考点的像素数)正在被鼠标指针悬停或点击,我们可以在一个小窗口中获得该点的位置/经度(可能像工具提示或弹出)。

插值的数学运算可以是:

new lat = ref lat + [ref lat(仅分钟)/ Y] *(参考点和新点之间的垂直距离,以像素为单位)

new long = ref long - [ref long(仅限分钟)/ X] *(参考点和新点之间的水平距离,以像素为单位)。

在跑道中心有一个叫做中点的点(在图形的中心)。我还需要找到由连接中点和新点(鼠标悬停或点击的位置)的线所形成的角度地图的垂直。

所以任何人请给我一些想法如何启动项目以及我需要构建gui包含图片窗口和弹出窗口(包含有关该点或像素的信息)的东西(工具栏控件,方法)我提前单击鼠标。谢谢。

2 个答案:

答案 0 :(得分:3)

标题中提出的问题回答如下:

double distance = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));

这是平面上两点之间的距离,因此是位图。

身体中提出的问题根本无法轻易回答。如果您有给定的地图,则定义两个坐标之间距离的函数可能不是线性的。这是一篇关于Map projection的文章,其中展示了一些不同的地图类型。为了能够计算出你需要的东西,你首先需要知道你实际使用的是哪种地图,然后相应地调整你的公式。

如果您的地图只是小尺寸,这可能没什么区别。你曾经在谈论一个跑道,如果这只是一个机场,那么预测不一定是个问题。如果你正在计算不同机场的两条跑道之间的距离,那将是另一回事。

答案 1 :(得分:1)

您的问题非常符合您的需求,并且有一些元素本身可能是问题。您可能希望将其分解为几个问题,或者单独研究每个项目。 e.g。

您需要查看WPFWindows Forms

您需要了解如何calculate the angle between two points