我不确定如何正确地说这个,但是我一直在处理将位图文件加载到Direct2D表面的地图查看器。但是我希望地图查看器鼠标X,Y坐标匹配与游戏坐标相似的那些。
以下是我所指的示例图片:
http://i.stack.imgur.com/FOaxG.png
左侧地图查看器是一个单独的应用程序,我试图在我自己的地图查看器中模仿它,但是你可以看到我在两个表格的左下角,并且坐标与Lon / Lat不匹配我的地图查看器。
我们是4624像素宽,左下角应转换为Lon:16384 Lat:24577而右上角将转换为Lon:90111 Lat:98304
var
BSize: TD2DSizeF;
S4, S5: string;
FPos: TPoint;
begin
S4 := 'Longitude: '+FloatToStr((BSize.Width / 360) * (180 + FPos.X));
S5 := 'Latitude: '+FloatToStr((BSize.Height / 180) * (90 - FPos.Y));
有人能指出我正确的方向来解决这个问题吗?我误解了这个概念吗?
答案 0 :(得分:1)
如果我理解正确,公式应为:
Lon := 16384 + x / MaxX * (90111 - 16384);
Lat := 98304 - y / MaxY * (98304 - 24577);
其中MaxX
和MaxY
是右下角的像素坐标(即Width - 1
和Height - 1
,相应的)。