ThinkGeo.com    |     Documentation    |     Premium Support

GeoImages used for PointStyles disappear in Silverlight 5

We have a Silverlight 4 project that makes use of png images for PointStyles.  The project has been working fine for months based on the following implementation (simple example):


PointStyle pointStyle = new PointStyle(new GeoImage(new Uri("/Theme/Images/bluestar.png", UriKind.Relative), 15, 15));


The images reside in a \Theme\Images folder in the shell Silverlight (v4) project and have a Build Action of "Content".


Since installing Silverlight 5 on my development workstation the images no longer show up for me but continue to display on workstations that have not upgraded to Silverlight 5.  Also, Silverlight is now trying to retrieve the images from .png">localhost/Theme/Images/<imagename>.png (but app is running in virtual directory localhost/abc/, so urls cause 404 Not Found error).  Even if I try copying the images folder to the localhost root, the images won't appear despite their urls being valid. 


I upgraded to build Silverlight Edition build 5.5.0.49 and the problem persists.  Can you determine:


1. Why the images are not appearing, and


2.  Why Silverlight 5 is trying to get the images externally when Silverlight 4 did not?



Chuck, 
  
 I was able to recreate this issue with one of the How Do I sample applications that uses an image with a PointStyle.  We aren’t sure what is going on yet but one of our developers will be looking into it and I will update this post once I get some more information on the issue. 
  
 Thank you for reporting it!

Chuck, 



I guess it's a breaking change of Silverlight 5 and I'm not very sure why Microsoft makes it. We found a workaround for you that works in Silverlight 5, please have a try.  

 
Stream imgStream = Application.GetResourceStream(new Uri("Theme/Images/bluestar.png", UriKind.RelativeOrAbsolute)).Stream; 
GeoImage geoImage = new GeoImage(); 

geoImage.SourceStream = imgStream; 
geoImage.Height = 15;  
geoImage.Width = 15; 
PointStyle bitmapPointStyle = new PointStyle(geoImage);



Thanks, 



Ben



Thanks Ben.  Sorry for the slow reply, but that workaround was successful.  I had a little trouble getting it to work until I noticed one small but important adjustment.  We had to remove the leading "/" from the uriString we had been passing into the Uri constructor (i.e., use "Theme/Images/imagename.png" instead of "/Theme/Images/imagename.png").



Hello Chuck, 
  
 We are glad it’s helped, please feel free to let us know your problems. 
  
 Regards, 
  
 Gary