![]() |
This document is archived and information here might be outdated. Recommended version. |
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