ThinkGeo.com    |     Documentation    |     Premium Support

Convert to Grayscale Icons

 So i have a set of icons that I want to convert to grayscale when some certain conditions are met. Is there an efficient way to do this with geoimages? Currently, I have to get the original bitmap from file (which I have in memory as a geoimage) and then convert it for every pixel in that image. This means have to have one value style that contains color images and another value style that only contains gray images.


The first valueStyle has a column name like ColorIcon whereas the second has something like GrayIcon. When the condition are met for the icon to be gray, I do something like


feature.columnvalues["ColorIcon"] = null;


feature.columnvalues["GrayIcon"] = grayIconName;


Obviously, this would throw an exception for the null column value; however, I did read elsewhere in the forums that there is a workaround for this. However, is there an easier way to do this? I feel like I'm making this more complicated that it needs to be. Thanks!



Hi Anthony, 
  
 Thanks for evaluating the Map Suite product and welcome to our discussion forum. 
  
 Sorry that there isn’t any efficent way or API provided to convert the image to grayscale, but after Googled a lot, I guess the tips shown at  tech.pro/tutorial/660/csharp-tutorial-convert-a-color-image-to-grayscale may be helpful for you. Please check it out. 
  
 Honestly, I’m a bit confuesed about the requirement of ValueStyle, can you shown more codes or more details here? The ValueStyle is a built-in style that will apply different styles to different values if the style’s value is equal to the feature’s value. If in this case, you can try declaring the ValueStyle like: 
  
 ValueStyle style = new ValueStyle(“IconImage”). 
  
 ValueItem item1 = new ValueItem(“Gray”, new IconStyle(…)); 
 style.AddItem(item1); 
 ValueItem item2 = new ValueItem(“Color”, new IconStyle(…)); 
 style.AddItem(item2). 
  
 Hope it helps. 
 Johnny