This document is archived and information here might be outdated. Recommended version. |
Exports a MOLE Cached Graphic to an in memory image as a .NET Bitmap.
///<summary>Exports a MOLE Cached Graphic to an in memory image as a .NET Bitmap.</summary> /// ///<param name="cachedGraphic">An ICachedGraphic interface.</param> ///<param name="display">An IDisplay interface. (ActiveView.ScreenDisplay if possible)</param> ///<param name="exportImageSize">A System.Int32 that is the pixel heigth/width size of the exported image file, between 5 and 2000 - limited to practical sizes or it would take unrealistically long. Example: 1024</param> ///<param name="color">An IColor interface.</param> /// ///<returns>A System.Drawing.Bitmap or Nothing if failure.</returns> /// ///<remarks> Call this method to export a MOLE Cached Graphic to an in memory image.</remarks> public System.Drawing.Bitmap ExportMOLECachedGraphicToBitmap(ESRI.ArcGIS.DefenseSolutions.ICachedGraphic cachedGraphic, ESRI.ArcGIS.Display.IDisplay display, System.Int32 exportImageSize, ESRI.ArcGIS.Display.IColor color) { System.Drawing.Bitmap exportBM=null; try { // Is it is a valid graphic if (cachedGraphic == null) { System.Diagnostics.Trace.WriteLine("Null Graphic passed to ExportCachedGraphicToBitmap"); return null; // i.e. fail } // check for valid export size // there is really no limit to this in MOLE, but // a. making it too small will be meaningless since you won't be able to represent with too few pixels // b. making it too large will hamper performance if ((exportImageSize < 5) || (exportImageSize > 2000)) { System.Diagnostics.Trace.WriteLine("Could not perform export, invalid image size selected: " + exportImageSize + " must be between 5..2000"); return null; // i.e. fail } ESRI.ArcGIS.DefenseSolutions.ICreateBitmap createBitmap=cachedGraphic as ESRI.ArcGIS.DefenseSolutions.ICreateBitmap; if (createBitmap == null) { System.Diagnostics.Trace.WriteLine("Could not convert graphic to ICreateBitmap"); return null; // i.e. fail } System.Int32 hDIB=createBitmap.DrawToDIB(display, exportImageSize, exportImageSize, 1.2, color); System.IntPtr iphDIB=new System.IntPtr(hDIB); exportBM=System.Drawing.Bitmap.FromHbitmap(iphDIB); // .NET only Class } catch (System.Exception ex) { System.Diagnostics.Trace.WriteLine(ex.StackTrace); System.Diagnostics.Trace.WriteLine(ex.Message); } return exportBM; }
'''<summary>Exports a MOLE Cached Graphic to an in memory image as a .NET Bitmap.</summary> ''' '''<param name="cachedGraphic">An ICachedGraphic interface.</param> '''<param name="display">An IDisplay interface. (ActiveView.ScreenDisplay if possible)</param> '''<param name="exportImageSize">A System.Int32 that is the pixel heigth/width size of the exported image file, between 5 and 2000 - limited to practical sizes or it would take unrealistically long. Example: 1024</param> '''<param name="color">An IColor interface.</param> ''' '''<returns>A System.Drawing.Bitmap or Nothing if failure.</returns> ''' '''<remarks> Call this method to export a MOLE Cached Graphic to an in memory image.</remarks> Public Function ExportMOLECachedGraphicToBitmap(ByVal cachedGraphic As ESRI.ArcGIS.DefenseSolutions.ICachedGraphic, ByVal display As ESRI.ArcGIS.Display.IDisplay, ByVal exportImageSize As System.Int32, ByVal color As ESRI.ArcGIS.Display.IColor) As System.Drawing.Bitmap Dim exportBM As System.Drawing.Bitmap=Nothing Try ' Is it is a valid graphic If cachedGraphic Is Nothing Then System.Diagnostics.Trace.WriteLine("Nothing Graphic passed to ExportCachedGraphicToBitmap") Return Nothing End If ' check for valid export size ' there is really no limit to this in MOLE, but ' a. making it too small will be meaningless since you won't be able to represent with too few pixels ' b. making it too large will hamper performance If (exportImageSize < 5) OrElse (exportImageSize > 2000) Then System.Diagnostics.Trace.WriteLine("Could not perform export, invalid image size selected: " + exportImageSize.ToString + " must be between 5..2000") Return Nothing End If Dim createBitmap As ESRI.ArcGIS.DefenseSolutions.ICreateBitmap=CType(cachedGraphic, ESRI.ArcGIS.DefenseSolutions.ICreateBitmap) ' Explict Cast If createBitmap Is Nothing Then System.Diagnostics.Trace.WriteLine("Could not convert graphic to ICreateBitmap") Return Nothing End If Dim hDIB As System.Int32=createBitmap.DrawToDIB(display, exportImageSize, exportImageSize, 1.2, color) Dim iphDIB As System.IntPtr=New IntPtr(hDIB) exportBM=System.Drawing.Bitmap.FromHbitmap(iphDIB) Catch ex As System.Exception System.Diagnostics.Trace.WriteLine(ex.StackTrace) System.Diagnostics.Trace.WriteLine(ex.Message) End Try Return exportBM End Function