This document is archived and information here might be outdated. Recommended version. |
ArcObjects Help for .NET developers > ESRI.ArcGIS.Snippets > Snippets > Convert Display Pixels to Map Units Snippet (ArcObjects .NET 10.4 SDK) |
Convert the display extents in Pixels (at the current map scale) and then return out the map units.
///<summary>Convert the display extents in Pixels (at the current map scale) and then return out the map units.</summary> /// ///<param name="activeView">An IActiveView interface</param> ///<param name="pixelUnits">A System.Double containing the number of display pixels to convert. Example: 100</param> /// ///<returns>A System.Double containing the number of Map Units, -1 is returned if something went wrong.</returns> /// ///<remarks></remarks> public System.Double ConvertPixelsToMapUnits(ESRI.ArcGIS.Carto.IActiveView activeView, System.Int32 pixelUnits) { if(activeView == null) { return -1; } //Get the ScreenDisplay ESRI.ArcGIS.Display.IScreenDisplay screenDisplay=activeView.ScreenDisplay; //Get the DisplayTransformation ESRI.ArcGIS.Display.IDisplayTransformation displayTransformation=screenDisplay.DisplayTransformation; //Get the device frame which will give us the number of pixels in the X direction ESRI.ArcGIS.Display.tagRECT deviceRECT=displayTransformation.get_DeviceFrame(); System.Int32 pixelExtent=(deviceRECT.right - deviceRECT.left); //Get the map extent of the currently visible area ESRI.ArcGIS.Geometry.IEnvelope envelope=displayTransformation.VisibleBounds; System.Double realWorldDisplayExtent=envelope.Width; //Calculate the size of one pixel if(pixelExtent == 0) { return -1; } System.Double sizeOfOnePixel=(realWorldDisplayExtent / pixelExtent); //Multiply this by the input argument to get the result return (pixelUnits * sizeOfOnePixel); }
'''<summary>Convert the display extents in Pixels (at the current map scale) and then return out the map units.</summary> ''' '''<param name="activeView">An IActiveView interface</param> '''<param name="pixelUnits">A System.Double containing the number of display pixels to convert. Example: 100</param> ''' '''<returns>A System.Double containing the number of Map Units, -1 is returned if something went wrong.</returns> ''' '''<remarks></remarks> Public Function ConvertPixelsToMapUnits(ByVal activeView As ESRI.ArcGIS.Carto.IActiveView, ByVal pixelUnits As System.Int32) As System.Double If activeView Is Nothing Then Return -1 End If 'Get the ScreenDisplay Dim screenDisplay As ESRI.ArcGIS.Display.IScreenDisplay=activeView.ScreenDisplay 'Get the DisplayTransformation Dim displayTransformation As ESRI.ArcGIS.Display.IDisplayTransformation=screenDisplay.DisplayTransformation 'Get the device frame which will give us the number of pixels in the X direction Dim deviceRECT As ESRI.ArcGIS.Display.tagRECT=displayTransformation.DeviceFrame Dim pixelExtent As System.Int32=(deviceRECT.right - deviceRECT.left) 'Get the map extent of the currently visible area Dim envelope As ESRI.ArcGIS.Geometry.IEnvelope=displayTransformation.VisibleBounds Dim realWorldDisplayExtent As System.Double=envelope.Width 'Calculate the size of one pixel If pixelExtent=0 Then Return -1 End If Dim sizeOfOnePixel As System.Double=(realWorldDisplayExtent / pixelExtent) 'Multiply this by the input argument to get the result Return (pixelUnits * sizeOfOnePixel) End Function