ThinkGeo.com    |     Documentation    |     Premium Support

Override UriTile.GetBitmapCore with the version 5?

Hello,


I'm migrating to the new version of MapSuite today (from version 4.0.64.0 to version 5.0.0.55).


I can't find the overridable method GetBitmapCore(UriTileArguments args) fom the class UriTile any more.


In the following sample code, I overrided the GetBitmapCore method in order to create a specific HttpRequest with a windows authentification and to change the opacity of the Tile.


 



    public class CustomWmsUriTile : UriTile
    {
        private float _opacity;

        public CustomWmsUriTile(float opacity)
        {
            _opacity = opacity;
        }

        protected override Bitmap GetBitmapCore(UriTileArguments args)
        {
            HttpWebResponse response = null;
            Bitmap bitmap = null;

            try
            {
                HttpWebRequest request = SingletonManager.Instance.Get<ServiceFactory>().CreateHttpWebRequestForGis(args.Uri.ToString());
                request.Proxy = args.WebProxy;

                response = (HttpWebResponse) request.GetResponse();
                bitmap = new Bitmap(response.GetResponseStream());

                if (_opacity == 1)
                    return bitmap;

                return ImageUtils.GetNewImageWithOpacity(bitmap, _opacity);
            }
            finally
            {
                if (response != null) { response.Close(); }
            }
        }
    }

 


Please can you say me how I should change my code in order to make it work again ?


Many thanks,

Guillaume.



Hi Guillaume, 
  
 Yes we don’t support GetBitmapCore now, if you want to set the opacity, why not directly set it in the overlay? 
  
 You can set it like this: 
  
 worldOverlay.OverlayCanvas.Opacity = .5; 
  
 Regards, 
  
 Don

Hi Don, 
  
 Thank you for your answer.  
 So for the opacity I can use the Overlay, I’ll do this. 
  
 And in order to set the windows credentials in the Tile request, haw can I do ? 
 Thanks !

Hi Guillaume, 
  
 I think you can try it like this: 
  
 uriTile.SendingRequest += new EventHandler<SendingRequestUriTileEventArgs>(uriTile_SendingRequest); 
  
  void uriTile_SendingRequest(object sender, SendingRequestUriTileEventArgs e) 
         { 
             string newUrl = ModifyUrl(e.WebRequest.RequestUri.AbsoluteUri);             
             e.WebRequest = HttpWebRequest.Create(newUrl); 
         } 
  
 That should works for you. 
  
 Regards, 
  
 Don

Hi, 
  
 This worked perfectly, thanks ! 
  
 Guillaume.

Guillaume, 
  
 You are welcome. 
  
 Regards, 
  
 Don