Click or drag to resize

ColorRamp Class

The color ramp object.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.RastersColorRamp

Namespace:  Esri.ArcGISRuntime.Rasters
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.9.0.0
Syntax
C#
public sealed class ColorRamp

The ColorRamp type exposes the following members.

Methods
  NameDescription
Public methodStatic memberCreate
Creates a color ramp with predefined color ramp type and size.
Top
Examples

Android

Example Name: ChangeBlendRenderer

Blend a hillshade with a raster by specifying the elevation data. The resulting raster looks similar to the original raster, but with some terrain shading, giving it a textured look.

Code example screen shot.

C#
// Copyright 2018 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;
using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Rasters;
using Esri.ArcGISRuntime.UI.Controls;
using System;
using System.Collections.Generic;
using ArcGISRuntime.Samples.Managers;

namespace ArcGISRuntime.Samples.ChangeBlendRenderer
{
    [Activity (ConfigurationChanges=Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    [Shared.Attributes.OfflineData("7c4c679ab06a4df19dc497f577f111bd","caeef9aa78534760b07158bb8e068462")]
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        name: "Blend renderer",
        category: "Layers",
        description: "Blend a hillshade with a raster by specifying the elevation data. The resulting raster looks similar to the original raster, but with some terrain shading, giving it a textured look.",
        instructions: "Choose and adjust the altitude, azimuth, slope type, and color ramp type settings to update the image.",
        tags: new[] { "Elevation", "Hillshade", "RasterLayer", "color ramp", "elevation", "image", "visualization" })]
    public class ChangeBlendRenderer : Activity
    {
        // Global reference to a label for Altitude
        private TextView _Label_Altitude;

        // Global reference to the slider (SeekBar) where the user can modify the Altitude
        private SeekBar _Slider_Altitude;

        // Global reference to a label for Azimuth
        private TextView _Label_Azimuth;

        // Global reference to the slider (SeekBar) where the user can modify the Azimuth
        private SeekBar _Slider_Azimuth;

        // Global reference to a label for SlopeTypes
        private TextView _Label_SlopeTypes;

        // Global reference to a label for ColorRamps
        private TextView _Label_ColorRamps;

        // Global reference to button the user clicks to change the stretch renderer on the raster 
        private Button _Button_UpdateRenderer;

        // Global reference to the MapView used in the sample
        private MapView _myMapView;

        // Global variable for the SlopeType being used - changeable when the user make 
        // a selection, set the default value to "Degree"
        private string _mySlopeTypeChoice = "Degree";

        // Global variable for the ColorRamp being used - changeable when the user make 
        // a selection, set the default value to "Elevation"
        private string _myColorRampChoice = "Elevation";

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            Title = "Blend renderer";

            // Create the layout
            CreateLayout();

            // Initialize the app
            Initialize();
        }

        private void CreateLayout()
        {
            // Create a stack layout
            LinearLayout layout = new LinearLayout(this) { Orientation = Orientation.Vertical };

            // Create label that displays Altitude
            _Label_Altitude = new TextView(this)
            {
                Text = "Altitude"
            };
            layout.AddView(_Label_Altitude);

            // Create a slider (SeekBar) that the user can modify the Altitude
            _Slider_Altitude = new SeekBar(this);
            layout.AddView(_Slider_Altitude);

            // Create label that displays Azimuth
            _Label_Azimuth = new TextView(this)
            {
                Text = "Azimuth"
            };
            layout.AddView(_Label_Azimuth);

            // Create a slider (SeekBar) that the user can modify the Azimuth
            _Slider_Azimuth = new SeekBar(this);
            layout.AddView(_Slider_Azimuth);

            // Create label that displays the SlopeType - set the default label to "Degree"
            _Label_SlopeTypes = new TextView(this)
            {
                Text = _mySlopeTypeChoice
            };
            layout.AddView(_Label_SlopeTypes);

            // Create button to choose a specific SlopeType
            Button slopeTypesButton = new Button(this)
            {
                Text = "SlopeTypes"
            };
            slopeTypesButton.Click += SlopeTypesButton_Click;
            layout.AddView(slopeTypesButton);

            // Create label that displays the ColorRamp  - set the default label to "Elevation"
            _Label_ColorRamps = new TextView(this)
            {
                Text = _myColorRampChoice
            };
            layout.AddView(_Label_ColorRamps);

            // Create button to choose a specific ColorRamp
            Button colorRampsButton = new Button(this)
            {
                Text = "Color Ramps"
            };
            colorRampsButton.Click += ColorRampsButton_Click;
            layout.AddView(colorRampsButton);

            // Create button to change stretch renderer of the raster, wire-up the touch/click 
            // event handler for the button
            _Button_UpdateRenderer = new Button(this)
            {
                Text = "Update Renderer"
            };
            _Button_UpdateRenderer.Click += OnUpdateRendererClicked;
            layout.AddView(_Button_UpdateRenderer);
            _Button_UpdateRenderer.Enabled = false;

            // Create a map view and add it to the layout
            _myMapView = new MapView(this);
            layout.AddView(_myMapView);

            // Set the layout as the sample view
            SetContentView(layout);
        }

        private void ColorRampsButton_Click(object sender, EventArgs e)
        {
            // Create a local variable for the ColorRamps button
            Button myButton_ColorRamps = (Button)sender;

            // Create menu to show ColorRamp options
            PopupMenu myPopupMenu_ColorRamps = new PopupMenu(this, myButton_ColorRamps);
            myPopupMenu_ColorRamps.MenuItemClick += OnColorRampsMenuItemClicked;

            // Create a string array of ColorRamp Enumerations the user can pick from
            string[] myColorRamps = Enum.GetNames(typeof(PresetColorRampType));

            // Create menu options from the array of ColorRamp choices
            foreach (string myColorRamp in myColorRamps)
                myPopupMenu_ColorRamps.Menu.Add(myColorRamp);

            // Show the popup menu in the view
            myPopupMenu_ColorRamps.Show();
        }

        private async void Initialize()
        {
            try
            {
                // Set the altitude slider min/max and initial value (minimum is always 0 - do 
                // not set _Altitude_Slider.Min = 0)
                _Slider_Altitude.Max = 90;
                _Slider_Altitude.Progress = 45;

                // Set the azimuth slider min/max and initial value (minimum is always 0 - do 
                // not set _AZimuth_Slider.Min = 0)
                _Slider_Azimuth.Max = 360;
                _Slider_Azimuth.Progress = 180;

                // Load the raster file using a path on disk
                Raster myRasterImagery = new Raster(GetRasterPath_Imagery());

                // Create the raster layer from the raster
                RasterLayer myRasterLayerImagery = new RasterLayer(myRasterImagery);

                // Create a new map using the raster layer as the base map 
                Map myMap = new Map(new Basemap(myRasterLayerImagery));

                // Wait for the layer to load - this enabled being able to obtain the extent information 
                // of the raster layer
                await myRasterLayerImagery.LoadAsync();

                // Create a new EnvelopeBuilder from the full extent of the raster layer 
                EnvelopeBuilder myEnvelopBuilder = new EnvelopeBuilder(myRasterLayerImagery.FullExtent);

                // Zoom in the extent just a bit so that raster layer encompasses the entire viewable 
                // area of the map
                myEnvelopBuilder.Expand(0.75);

                // Set the viewpoint of the map to the EnvelopeBuilder's extent
                myMap.InitialViewpoint = new Viewpoint(myEnvelopBuilder.ToGeometry().Extent);

                // Add map to the map view
                _myMapView.Map = myMap;

                // Wait for the map to load
                await myMap.LoadAsync();

                // Enable the 'Update Renderer' button now that the map has loaded
                _Button_UpdateRenderer.Enabled = true;
            }
            catch (Exception ex)
            {
                new AlertDialog.Builder(this).SetMessage(ex.ToString()).SetTitle("Error").Show();
            }
        }

        private void SlopeTypesButton_Click(object sender, EventArgs e)
        {
            // Create a local variable for the SlopeTypes button
            Button myButton_SlopeTypes = (Button)sender;

            // Create menu to show SlopeType options
            PopupMenu myPopupMenu_SlopeTypes = new PopupMenu(this, myButton_SlopeTypes);
            myPopupMenu_SlopeTypes.MenuItemClick += OnSlopeTypesMenuItemClicked;

            // Create a string array of SlopeType Enumerations the user can pick from
            string[] mySlopeTypes = Enum.GetNames(typeof(SlopeType));

            // Create menu options from the array of SlopeType choices
            foreach (string mySlopeType in mySlopeTypes)
                myPopupMenu_SlopeTypes.Menu.Add(mySlopeType);

            // Show the popup menu in the view
            myPopupMenu_SlopeTypes.Show();
        }

        private void OnSlopeTypesMenuItemClicked(object sender, PopupMenu.MenuItemClickEventArgs e)
        {
            // Get user selected SlopeType choice title from the selected item
            _mySlopeTypeChoice = e.Item.TitleCondensedFormatted.ToString();

            // Set the text of the label to be the name of the SlopeType choice
            _Label_SlopeTypes.Text = _mySlopeTypeChoice;
        }

        private void OnColorRampsMenuItemClicked(object sender, PopupMenu.MenuItemClickEventArgs e)
        {
            // Get user selected ColorRamp choice title from the selected item
            _myColorRampChoice = e.Item.TitleCondensedFormatted.ToString();

            // Set the text of the label to be the name of the ColorRamp choice
            _Label_ColorRamps.Text = _myColorRampChoice;
        }

        private void OnUpdateRendererClicked(object sender, EventArgs e)
        {
            // Define the RasterLayer that will be used to display in the map
            RasterLayer rasterLayer_ForDisplayInMap;

            // Define the ColorRamp that will be used by the BlendRenderer
            ColorRamp myColorRamp;

            // Based on ColorRamp type chosen by the user, create a different
            // RasterLayer and define the appropriate ColorRamp option
            if (_myColorRampChoice == "None")
            {
                // The user chose not to use a specific ColorRamp, therefore 
                // need to create a RasterLayer based on general imagery (ie. Shasta.tif)
                // for display in the map and use null for the ColorRamp as one of the
                // parameters in the BlendRenderer constructor

                // Load the raster file using a path on disk
                Raster raster_Imagery = new Raster(GetRasterPath_Imagery());

                // Create the raster layer from the raster
                rasterLayer_ForDisplayInMap = new RasterLayer(raster_Imagery);

                // Set up the ColorRamp as being null
                myColorRamp = null;
            }
            else
            {
                // The user chose a specific ColorRamp (options: are Elevation, DemScreen, DemLight), 
                // therefore create a RasterLayer based on an imagery with elevation 
                // (ie. Shasta_Elevation.tif) for display in the map. Also create a ColorRamp 
                // based on the user choice, translated into an Enumeration, as one of the parameters 
                // in the BlendRenderer constructor

                // Load the raster file using a path on disk
                Raster raster_Elevation = new Raster(GetRasterPath_Elevation());

                // Create the raster layer from the raster
                rasterLayer_ForDisplayInMap = new RasterLayer(raster_Elevation);

                // Create a ColorRamp based on the user choice, translated into an Enumeration
                PresetColorRampType myPresetColorRampType = (PresetColorRampType)Enum.Parse(typeof(PresetColorRampType), _myColorRampChoice);
                myColorRamp = ColorRamp.Create(myPresetColorRampType, 256);
            }

            // Define the parameters used by the BlendRenderer constructor
            Raster raster_ForMakingBlendRenderer = new Raster(GetRasterPath_Elevation());
            IEnumerable<double> myOutputMinValues = new List<double> { 9 };
            IEnumerable<double> myOutputMaxValues = new List<double> { 255 };
            IEnumerable<double> mySourceMinValues = new List<double>();
            IEnumerable<double> mySourceMaxValues = new List<double>();
            IEnumerable<double> myNoDataValues = new List<double>();
            IEnumerable<double> myGammas = new List<double>();
            SlopeType mySlopeType = (SlopeType)Enum.Parse(typeof(SlopeType), _mySlopeTypeChoice);

            BlendRenderer myBlendRenderer = new BlendRenderer(
                raster_ForMakingBlendRenderer, // elevationRaster - Raster based on a elevation source
                myOutputMinValues, // outputMinValues - Output stretch values, one for each band
                myOutputMaxValues, // outputMaxValues - Output stretch values, one for each band
                mySourceMinValues, // sourceMinValues - Input stretch values, one for each band
                mySourceMaxValues, // sourceMaxValues - Input stretch values, one for each band
                myNoDataValues, // noDataValues - NoData values, one for each band
                myGammas, // gammas - Gamma adjustment
                myColorRamp, // colorRamp - ColorRamp object to use, could be null
                _Slider_Altitude.Progress, // altitude - Altitude angle of the light source
                _Slider_Azimuth.Progress, // azimuth - Azimuth angle of the light source, measured clockwise from north
                1, // zfactor - Factor to convert z unit to x,y units, default is 1
                mySlopeType, // slopeType - Slope Type
                1, // pixelSizeFactor - Pixel size factor, default is 1
                1, // pixelSizePower - Pixel size power value, default is 1
                8); // outputBitDepth - Output bit depth, default is 8-bi

            // Set the RasterLayer.Renderer to be the BlendRenderer
            rasterLayer_ForDisplayInMap.Renderer = myBlendRenderer;

            // Set the new base map to be the RasterLayer with the BlendRenderer applied
            _myMapView.Map.Basemap = new Basemap(rasterLayer_ForDisplayInMap);
        }

        private static string GetRasterPath_Imagery()
        {
            return DataManager.GetDataFolder("7c4c679ab06a4df19dc497f577f111bd", "raster-file", "Shasta.tif");
        }

        private static string GetRasterPath_Elevation()
        {
            return DataManager.GetDataFolder("caeef9aa78534760b07158bb8e068462", "Shasta_Elevation.tif");
        }
    }
}
Examples

Xamarin Forms Android

Example Name: ChangeBlendRenderer

Blend a hillshade with a raster by specifying the elevation data. The resulting raster looks similar to the original raster, but with some terrain shading, giving it a textured look.

Code example screen shot.

C#
// Copyright 2018 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Rasters;
using ArcGISRuntime.Samples.Managers;
using System;
using System.Collections.Generic;
using Xamarin.Forms;

namespace ArcGISRuntime.Samples.ChangeBlendRenderer
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        name: "Blend renderer",
        category: "Layers",
        description: "Blend a hillshade with a raster by specifying the elevation data. The resulting raster looks similar to the original raster, but with some terrain shading, giving it a textured look.",
        instructions: "Choose and adjust the altitude, azimuth, slope type, and color ramp type settings to update the image.",
        tags: new[] { "Elevation", "Hillshade", "RasterLayer", "color ramp", "elevation", "image", "visualization" })]
    [Shared.Attributes.OfflineData("7c4c679ab06a4df19dc497f577f111bd","caeef9aa78534760b07158bb8e068462")]
    public partial class ChangeBlendRenderer : ContentPage
    {
        public ChangeBlendRenderer()
        {
            InitializeComponent();

            // Create the UI, setup the control references and execute initialization 
            Initialize();
        }

        private async void Initialize()
        {
            // Get all the ColorRamp names from the PresetColorRampType Enumeration and put them 
            // in an array of strings, then set the ComboBox.ItemSource to the array, and finally 
            // select the first item in the ComboBox
            string[] myPresetColorRampTypes = Enum.GetNames(typeof(PresetColorRampType));
            ColorRamps.ItemsSource = myPresetColorRampTypes;
            ColorRamps.SelectedItem = "Elevation";

            // Get all the SlopeType names from the SlopeType Enumeration and put them 
            // in an array of strings, then set the ComboBox.ItemSource to the array, and finally 
            // select the first item in the ComboBox
            string[] mySlopeTypes = Enum.GetNames(typeof(SlopeType));
            SlopeTypes.ItemsSource = mySlopeTypes;
            SlopeTypes.SelectedItem = "Degree";

            // Set the altitude slider min/max and initial value
            Altitude_Slider.Minimum = 0;
            Altitude_Slider.Maximum = 90;
            Altitude_Slider.Value = 45;

            // Set the azimuth slider min/max and initial value
            Azimuth_Slider.Minimum = 0;
            Azimuth_Slider.Maximum = 360;
            Azimuth_Slider.Value = 180;

            // Load the raster file using a path on disk
            Raster myRasterImagery = new Raster(GetRasterPath_Imagery());

            // Create the raster layer from the raster
            RasterLayer myRasterLayerImagery = new RasterLayer(myRasterImagery);

            // Create a new map using the raster layer as the base map 
            Map myMap = new Map(new Basemap(myRasterLayerImagery));

            try
            {
                // Wait for the layer to load - this enabled being able to obtain the extent information 
                // of the raster layer
                await myRasterLayerImagery.LoadAsync();

                // Create a new EnvelopeBuilder from the full extent of the raster layer 
                EnvelopeBuilder myEnvelopBuilder = new EnvelopeBuilder(myRasterLayerImagery.FullExtent);

                // Zoom in the extent just a bit so that raster layer encompasses the entire viewable area of the map
                myEnvelopBuilder.Expand(0.75);

                // Set the viewpoint of the map to the EnvelopeBuilder's extent
                myMap.InitialViewpoint = new Viewpoint(myEnvelopBuilder.ToGeometry().Extent);

                // Add map to the map view
                MyMapView.Map = myMap;

                // Wait for the map to load
                await myMap.LoadAsync();

                // Enable the 'Update Renderer' button now that the map has loaded
                UpdateRenderer.IsEnabled = true;
            }
            catch (Exception e)
            {
                await Application.Current.MainPage.DisplayAlert("Error", e.ToString(), "OK");
            }
        }

        private void OnUpdateRendererClicked(object sender, EventArgs e)
        {
            // Define the RasterLayer that will be used to display in the map
            RasterLayer rasterLayer_ForDisplayInMap;

            // Define the ColorRamp that will be used by the BlendRenderer
            ColorRamp myColorRamp;

            // Based on ColorRamp type chosen by the user, create a different
            // RasterLayer and define the appropriate ColorRamp option
            if (ColorRamps.SelectedItem.ToString() == "None")
            {
                // The user chose not to use a specific ColorRamp, therefore 
                // need to create a RasterLayer based on general imagery (ie. Shasta.tif)
                // for display in the map and use null for the ColorRamp as one of the
                // parameters in the BlendRenderer constructor

                // Load the raster file using a path on disk
                Raster raster_Imagery = new Raster(GetRasterPath_Imagery());

                // Create the raster layer from the raster
                rasterLayer_ForDisplayInMap = new RasterLayer(raster_Imagery);

                // Set up the ColorRamp as being null
                myColorRamp = null;
            }
            else
            {
                // The user chose a specific ColorRamp (options: are Elevation, DemScreen, DemLight), 
                // therefore create a RasterLayer based on an imagery with elevation 
                // (ie. Shasta_Elevation.tif) for display in the map. Also create a ColorRamp 
                // based on the user choice, translated into an Enumeration, as one of the parameters 
                // in the BlendRenderer constructor

                // Load the raster file using a path on disk
                Raster raster_Elevation = new Raster(GetRasterPath_Elevation());

                // Create the raster layer from the raster
                rasterLayer_ForDisplayInMap = new RasterLayer(raster_Elevation);

                // Create a ColorRamp based on the user choice, translated into an Enumeration
                PresetColorRampType myPresetColorRampType = (PresetColorRampType)Enum.Parse(typeof(PresetColorRampType), ColorRamps.SelectedItem.ToString());
                myColorRamp = ColorRamp.Create(myPresetColorRampType, 256);
            }

            // Define the parameters used by the BlendRenderer constructor
            Raster raster_ForMakingBlendRenderer = new Raster(GetRasterPath_Elevation());
            IEnumerable<double> myOutputMinValues = new List<double> { 9 };
            IEnumerable<double> myOutputMaxValues = new List<double> { 255 };
            IEnumerable<double> mySourceMinValues = new List<double>();
            IEnumerable<double> mySourceMaxValues = new List<double>();
            IEnumerable<double> myNoDataValues = new List<double>();
            IEnumerable<double> myGammas = new List<double>();
            SlopeType mySlopeType = (SlopeType)Enum.Parse(typeof(SlopeType), SlopeTypes.SelectedItem.ToString());

            BlendRenderer myBlendRenderer = new BlendRenderer(
                raster_ForMakingBlendRenderer, // elevationRaster - Raster based on a elevation source
                myOutputMinValues, // outputMinValues - Output stretch values, one for each band
                myOutputMaxValues, // outputMaxValues - Output stretch values, one for each band
                mySourceMinValues, // sourceMinValues - Input stretch values, one for each band
                mySourceMaxValues, // sourceMaxValues - Input stretch values, one for each band
                myNoDataValues, // noDataValues - NoData values, one for each band
                myGammas, // gammas - Gamma adjustment
                myColorRamp, // colorRamp - ColorRamp object to use, could be null
                Altitude_Slider.Value, // altitude - Altitude angle of the light source
                Azimuth_Slider.Value, // azimuth - Azimuth angle of the light source, measured clockwise from north
                1, // zfactor - Factor to convert z unit to x,y units, default is 1
                mySlopeType, // slopeType - Slope Type
                1, // pixelSizeFactor - Pixel size factor, default is 1
                1, // pixelSizePower - Pixel size power value, default is 1
                8); // outputBitDepth - Output bit depth, default is 8-bi

            // Set the RasterLayer.Renderer to be the BlendRenderer
            rasterLayer_ForDisplayInMap.Renderer = myBlendRenderer;

            // Set the new base map to be the RasterLayer with the BlendRenderer applied
            MyMapView.Map.Basemap = new Basemap(rasterLayer_ForDisplayInMap);
        }

        private static string GetRasterPath_Imagery()
        {
            return DataManager.GetDataFolder("7c4c679ab06a4df19dc497f577f111bd", "raster-file", "Shasta.tif");
        }

        private static string GetRasterPath_Elevation()
        {
            return DataManager.GetDataFolder("caeef9aa78534760b07158bb8e068462", "Shasta_Elevation.tif");
        }

    }
}
XAML
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
    x:Class="ArcGISRuntime.Samples.ChangeBlendRenderer.ChangeBlendRenderer"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:esriUI="clr-namespace:Esri.ArcGISRuntime.Xamarin.Forms;assembly=Esri.ArcGISRuntime.Xamarin.Forms"
    Title="Blend Renderer">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40" />
            <RowDefinition Height="40" />
            <RowDefinition Height="90" />
            <RowDefinition Height="90" />
            <RowDefinition Height="60" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <StackLayout Grid.Row="0" Orientation="Horizontal">
            <Label x:Name="Label_Altitude" Margin="10,5" Text="Altitude" />
            <Slider x:Name="Altitude_Slider" MaximumTrackColor="CadetBlue" MinimumTrackColor="CadetBlue" WidthRequest="100" />
        </StackLayout>
        <StackLayout Grid.Row="1" Orientation="Horizontal">
            <Label x:Name="Label_Azimuth" Margin="10,5" Text="Azimuth" />
            <Slider x:Name="Azimuth_Slider" MaximumTrackColor="CadetBlue" MinimumTrackColor="CadetBlue" WidthRequest="100" />
        </StackLayout>
        <StackLayout Grid.Row="2" Orientation="Horizontal">
            <Label x:Name="Label_SlopeTypes" Margin="10,5" Text="Slope Type" WidthRequest="80" />
            <ListView x:Name="SlopeTypes" Margin="10,5" />
        </StackLayout>
        <StackLayout Grid.Row="3" Orientation="Horizontal">
            <Label x:Name="Label_ColorRamps" Margin="10,5" Text="Color Ramp" WidthRequest="80" />
            <ListView x:Name="ColorRamps" Margin="10,5" />
        </StackLayout>
        <Button
            x:Name="UpdateRenderer"
            Grid.Row="4"
            Margin="10,10"
            Clicked="OnUpdateRendererClicked"
            IsEnabled="True"
            Text="Update Renderer" />
        <esriUI:MapView x:Name="MyMapView" Grid.Row="5" />
    </Grid>
</ContentPage>
See Also
Additional Examples
Hyperlink to ExampleDescription
ChangeBlendRendererBlend a hillshade with a raster by specifying the elevation data. The resulting raster looks similar to the original raster, but with some terrain shading, giving it a textured look.
ChangeStretchRendererUse a stretch renderer to enhance the visual contrast of raster data for analysis.