How to get screen coordinates from map coordinates


Summary
This topic summarizes how to obtain device (screen) coordinates from real-world (map) coordinates.

Getting screen coordinates from map coordinates

Call IDisplayTransformation.FromMapPoint and pass in an IPoint that contains real-world (map) coordinates and x,y device (screen) coordinates that will be populated and returned by the method. See the following steps and code examples:
  1. Obtain an IScreenDisplay reference to the ScreenDisplay object from IActiveView.ScreenDisplay. See the following code example:
[VB.NET]

Dim screenDisplay As ESRI.ArcGIS.Display.IScreenDisplay = activeView.ScreenDisplay
[C#]
ESRI.ArcGIS.Display.IScreenDisplay screenDisplay = activeView.ScreenDisplay;
  1. Obtain an IDisplayTransformation reference to the DisplayTransformation object from IScreenDisplay.DisplayTransformation. See the following code example:
[VB.NET]
Dim displayTransformation As ESRI.ArcGIS.Display.IDisplayTransformation = screenDisplay.DisplayTransformation
[C#]
ESRI.ArcGIS.Display.IDisplayTransformation displayTransformation =
    screenDisplay.DisplayTransformation
  1. Call the IDisplayTransformation.FromMapPoint method to convert point's map coordinates to screen coordinates. An IPoint that contains real-world (map) coordinates is passed into the method and x,y that will return corresponding screen coordinates. See the following code example:
[VB.NET]
displayTransformation.FromMapPoint(mapPoint, x, y)
[C#]
displayTransformation.FromMapPoint(mapPoint, out x, out y);
See the following code example that shows the GetScreenCoordinatesFromMapCoorindates function that takes point in map coordinates as the parameter and returns point in screen coordinates:
[VB.NET]
Public Function GetScreenCoordinatesFromMapCoorindates(ByVal mapPoint As ESRI.ArcGIS.Geometry.IPoint, ByVal activeView As ESRI.ArcGIS.Carto.IActiveView) As ESRI.ArcGIS.Geometry.IPoint
    If mapPoint Is Nothing OrElse mapPoint.IsEmpty OrElse activeView Is Nothing Then
        Return Nothing
    End If
    Dim screenDisplay As ESRI.ArcGIS.Display.IScreenDisplay = activeView.ScreenDisplay
    Dim displayTransformation As ESRI.ArcGIS.Display.IDisplayTransformation = screenDisplay.DisplayTransformation
    Dim x As System.Int32
    Dim y As System.Int32
    displayTransformation.FromMapPoint(mapPoint, x, y)
    Dim returnPoint As ESRI.ArcGIS.Geometry.IPoint = New ESRI.ArcGIS.Geometry.PointClass
    returnPoint.PutCoords(x, y)
    Return returnPoint
End Function
[C#]
public ESRI.ArcGIS.Geometry.IPoint GetScreenCoordinatesFromMapCoorindates
    (ESRI.ArcGIS.Geometry.IPoint mapPoint, ESRI.ArcGIS.Carto.IActiveView activeView)
{
    if (mapPoint == null || mapPoint.IsEmpty || activeView == null)
    {
        return null;
    }
    ESRI.ArcGIS.Display.IScreenDisplay screenDisplay = activeView.ScreenDisplay;
    ESRI.ArcGIS.Display.IDisplayTransformation displayTransformation =
        screenDisplay.DisplayTransformation;
    System.Int32 x;
    System.Int32 y;
    displayTransformation.FromMapPoint(mapPoint, out x, out y);
    ESRI.ArcGIS.Geometry.IPoint returnPoint = new ESRI.ArcGIS.Geometry.PointClass();
    returnPoint.PutCoords(x, y);
    return returnPoint;
}


See Also:

How to get map coordinates from screen coordinates
Snippet: Get screen coordinates from map coordinates




Development licensing Deployment licensing
ArcGIS for Desktop Basic ArcGIS for Desktop Basic
ArcGIS for Desktop Standard ArcGIS for Desktop Standard
ArcGIS for Desktop Advanced ArcGIS for Desktop Advanced
Engine Developer Kit Engine