Source Code WpfDesktopEditionSample ColorReplacement.zip

MainWindow.xaml.cs

using System.Windows;
using ThinkGeo.MapSuite.Core;
using ThinkGeo.MapSuite.WpfDesktopEdition;
 
namespace ColorReplacement
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // Set the Map Unit.
            wpfMap1.MapUnit = GeographyUnit.Meter;
 
            // Create WorldMapKitWmsWpfOverlay as the basemap.
            WorldMapKitWmsWpfOverlay wmk = new WorldMapKitWmsWpfOverlay();
            wmk.Projection = WorldMapKitProjection.SphericalMercator;
            wmk.MapType = WorldMapKitMapType.Aerial;
            wpfMap1.Overlays.Add(wmk);
 
            // Create a single-tile overlay to hold the lake image.
            LayerOverlay layerOverlay = new LayerOverlay();
            layerOverlay.TileType = TileType.SingleTile;
            wpfMap1.Overlays.Add("layerOverlay", layerOverlay);
 
            // Create a raster layer to load the lake image. 
            RectangleShape targetExtent = new RectangleShape(-11191114.7309915, 4674772.10425472, -11189708.4809915, 4673647.10425472);
            GdiPlusRasterLayer rasterLayer = new GdiPlusRasterLayer(@"..\..\App_Data\Lake.png", targetExtent);
            layerOverlay.Layers.Add("raster", rasterLayer);
 
            wpfMap1.CurrentExtent = targetExtent;
            wpfMap1.Refresh();
        }
 
        private void btnReplace_Click(object sender, RoutedEventArgs e)
        {
            LayerOverlay layerOverlay = (LayerOverlay)wpfMap1.Overlays["layerOverlay"];
            GdiPlusRasterLayer rasterLayer = (GdiPlusRasterLayer)(layerOverlay.Layers["raster"]);
 
            // Set the ColorMappings. [Note: Before reuser, please clear it]
            rasterLayer.ColorMappings.Clear();
            rasterLayer.ColorMappings.Add(GeoColors.Blue, GeoColors.Green);
            rasterLayer.ColorMappings.Add(GeoColors.Green, GeoColors.Blue);
 
            rasterLayer.Transparency = 150;
 
            wpfMap1.Refresh();
        }
    }
}