//屏幕 X 坐标到地图 X 坐标 Function TNetMap.STMX(X:Integer):Double; Begin {If FShowGrid2 Then Result:=Round((BeginX+X/FMapZoom)/FGridSize)*FGridSize Else} Result:=BeginX+X/FMapZoom; End;//屏幕 Y 坐标到地图 Y 坐标 Function TNetMap.STMY(Y:Integer):Double; Begin {If FShowGrid2 Then Result:=Round((BeginY+(H-Y)/FMapZoom)/FGridSize)*FGridSize Else} Result:=BeginY+(H-Y)/FMapZoom; End;//地图 X 坐标到屏幕 X 坐标 Function TNetMap.MTSX(X:Double):Integer; Begin Result:=Round((X-BeginX)*FMapZoom); //Result:=Trunc((X-BeginX)*FMapZoom); End;//地图 Y 坐标到屏幕 Y 坐标 Function TNetMap.MTSY(Y:Double):Integer; Begin Result:=Round(H-(Y-BeginY)*FMapZoom); //Result:=Trunc(H-(Y-BeginY)*FMapZoom); End;
var CurPoint: TPoint; begin GetCursorPos(CurPoint); //获取屏幕指针坐标 Point := Image.ScreenToClient(CurPoint); //转换成Image控件内的指针坐标
1、为系统建立坐标系,分为相对坐标和绝对坐标。
2、建立相对坐标到绝对坐标的转换系统。看你的软件的复杂程度,如果不是很复杂,可以使用TImage做,很简单,上面的工作,你就都不需要做了。:)
Function TNetMap.STMX(X:Integer):Double;
Begin
{If FShowGrid2 Then
Result:=Round((BeginX+X/FMapZoom)/FGridSize)*FGridSize
Else}
Result:=BeginX+X/FMapZoom;
End;//屏幕 Y 坐标到地图 Y 坐标
Function TNetMap.STMY(Y:Integer):Double;
Begin
{If FShowGrid2 Then
Result:=Round((BeginY+(H-Y)/FMapZoom)/FGridSize)*FGridSize
Else}
Result:=BeginY+(H-Y)/FMapZoom;
End;//地图 X 坐标到屏幕 X 坐标
Function TNetMap.MTSX(X:Double):Integer;
Begin
Result:=Round((X-BeginX)*FMapZoom);
//Result:=Trunc((X-BeginX)*FMapZoom);
End;//地图 Y 坐标到屏幕 Y 坐标
Function TNetMap.MTSY(Y:Double):Integer;
Begin
Result:=Round(H-(Y-BeginY)*FMapZoom);
//Result:=Trunc(H-(Y-BeginY)*FMapZoom);
End;
CurPoint: TPoint;
begin
GetCursorPos(CurPoint); //获取屏幕指针坐标 Point := Image.ScreenToClient(CurPoint); //转换成Image控件内的指针坐标
end;