ThinkGeo.com    |     Documentation    |     Premium Support

More StreamLoading questions

I'm sure this has been visited hundeds of times, but I cannot find the resolution to my issue.    I'm using the 4.5 production release.


I have a class that derives from the GdiPlusRasterLayer.   And in my derivation, I have a bitmap that I want to use for the imagery.   So, I have a StreamLoading handler on the GdiPlusRasterSource that set as the ImageSource of the raster layer.


In my "DrawCore" event, I try to call base.DrawCore().   This throws an error because the layer has not been opened.   That makes sense, so I add  a base.Open() call.   This throws an error because the "File specified does not exist", and tells me the name of the file.   And that is also correct.   I don't have this file.  That's why I want to use the StreamLoadIng event.


The StreamLoading event of on the raster source is never firing unless I make a call to ImageSource.Open().


I'm not overriding the layer.OpenCore, et al, functions.  


Why am I getting this file not found exception when opening a layer, w/o the StreamLoading event being called on the underlying raster source?



Ok… I found an issue in my code.  I forgot to set the layer.ImageSource to the new image source I had instantiated. 
  
 I still have questions about the process, but I’ll migrate to 5.0, as it appears to have had significant updates in this area.


 Ted, 
  
 I think your class may not implement as the right way, you can try use default GdiPlusRasterLayer and use StreamLoading to load image and world file on the fly, it should work. Let me guess some possible thing, for example, your custom RaterLyer didn’t create a corresponding RaterSource at constructor, if that you probably need to write code like this way: 
         public CustomGdiPlusRasterLayer(string pathFilename) 
             : base() 
         { 
             base.ImageSource = new CustomGdiPlusRasterSource(pathFilename); 
         } 
  
 Please provide more information if you still have problem. 
  
 Thanks, 
 James