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);}
转载自:ms-help://MS.VSCC.v90/MS.VSIPCC.v90/ESRI.EDNv9.3/Snippets/html/cabbae3d-ccaf-40cb-9bb6-b4fc44fb125e.htm
转载于:https://www.cnblogs.com/wuhenke/archive/2011/05/24/2055208.html