About the Retrieve a color ramp from the SymbologyControl Sample
[C#]
ColorRamps.cs
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS;
namespace ColorRamps
{
public class Form1 : System.Windows.Forms.Form
{
private ESRI.ArcGIS.Controls.AxToolbarControl axToolbarControl1;
private ESRI.ArcGIS.Controls.AxPageLayoutControl axPageLayoutControl1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Button button1;
private ESRI.ArcGIS.Controls.AxTOCControl axTOCControl1;
private ESRI.ArcGIS.Controls.AxLicenseControl axLicenseControl1;
private System.ComponentModel.Container components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
//Release COM objects
ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown();
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
this.axToolbarControl1 = new ESRI.ArcGIS.Controls.AxToolbarControl();
this.axPageLayoutControl1 = new ESRI.ArcGIS.Controls.AxPageLayoutControl();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.button1 = new System.Windows.Forms.Button();
this.axTOCControl1 = new ESRI.ArcGIS.Controls.AxTOCControl();
this.axLicenseControl1 = new ESRI.ArcGIS.Controls.AxLicenseControl();
((System.ComponentModel.ISupportInitialize)(this.axToolbarControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axPageLayoutControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axTOCControl1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.axLicenseControl1)).BeginInit();
this.SuspendLayout();
//
// axToolbarControl1
//
this.axToolbarControl1.Location = new System.Drawing.Point(8, 8);
this.axToolbarControl1.Name = "axToolbarControl1";
this.axToolbarControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axToolbarControl1.OcxState")));
this.axToolbarControl1.Size = new System.Drawing.Size(392, 28);
this.axToolbarControl1.TabIndex = 0;
//
// axPageLayoutControl1
//
this.axPageLayoutControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.axPageLayoutControl1.Location = new System.Drawing.Point(192, 40);
this.axPageLayoutControl1.Name = "axPageLayoutControl1";
this.axPageLayoutControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axPageLayoutControl1.OcxState")));
this.axPageLayoutControl1.Size = new System.Drawing.Size(464, 384);
this.axPageLayoutControl1.TabIndex = 1;
this.axPageLayoutControl1.OnPageLayoutReplaced += new ESRI.ArcGIS.Controls.IPageLayoutControlEvents_Ax_OnPageLayoutReplacedEventHandler(this.axPageLayoutControl1_OnPageLayoutReplaced);
//
// comboBox1
//
this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.comboBox1.Location = new System.Drawing.Point(408, 8);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(121, 21);
this.comboBox1.TabIndex = 3;
this.comboBox1.Text = "comboBox1";
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button1.Location = new System.Drawing.Point(536, 8);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(120, 23);
this.button1.TabIndex = 4;
this.button1.Text = "Change Color Ramp";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// axTOCControl1
//
this.axTOCControl1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.axTOCControl1.Location = new System.Drawing.Point(8, 40);
this.axTOCControl1.Name = "axTOCControl1";
this.axTOCControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axTOCControl1.OcxState")));
this.axTOCControl1.Size = new System.Drawing.Size(176, 384);
this.axTOCControl1.TabIndex = 5;
//
// axLicenseControl1
//
this.axLicenseControl1.Enabled = true;
this.axLicenseControl1.Location = new System.Drawing.Point(176, 216);
this.axLicenseControl1.Name = "axLicenseControl1";
this.axLicenseControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axLicenseControl1.OcxState")));
this.axLicenseControl1.Size = new System.Drawing.Size(32, 32);
this.axLicenseControl1.TabIndex = 6;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(664, 430);
this.Controls.Add(this.axLicenseControl1);
this.Controls.Add(this.axTOCControl1);
this.Controls.Add(this.button1);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.axPageLayoutControl1);
this.Controls.Add(this.axToolbarControl1);
this.Name = "Form1";
this.Text = "Color Ramps";
this.Load += new System.EventHandler(this.Form1_Load);
((System.ComponentModel.ISupportInitialize)(this.axToolbarControl1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axPageLayoutControl1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axTOCControl1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.axLicenseControl1)).EndInit();
this.ResumeLayout(false);
}
#endregion
[STAThread]
static void Main()
{
if (!RuntimeManager.Bind(ProductCode.Engine))
{
if (!RuntimeManager.Bind(ProductCode.Desktop))
{
MessageBox.Show("Unable to bind to ArcGIS runtime. Application will be shut down.");
return;
}
}
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
//Set buddy control
axToolbarControl1.SetBuddyControl(axPageLayoutControl1);
axTOCControl1.SetBuddyControl(axPageLayoutControl1);
//Add ToolbarControl items
axToolbarControl1.AddItem("esriControls.ControlsOpenDocCommand");
axToolbarControl1.AddItem("esriControls.ControlsSaveAsDocCommand");
axToolbarControl1.AddItem("esriControls.ControlsPageZoomInTool");
axToolbarControl1.AddItem("esriControls.ControlsPageZoomOutTool");
axToolbarControl1.AddItem("esriControls.ControlsPageZoomWholePageCommand");
axToolbarControl1.AddItem("esriControls.ControlsMapZoomInTool");
axToolbarControl1.AddItem("esriControls.ControlsMapZoomOutTool");
axToolbarControl1.AddItem("esriControls.ControlsMapPanTool");
axToolbarControl1.AddItem("esriControls.ControlsMapFullExtentCommand");
axToolbarControl1.AddItem("esriControls.ControlsMapIdentifyTool");
//Disable controls
button1.Enabled = false;
comboBox1.Enabled = false;
}
private void axPageLayoutControl1_OnPageLayoutReplaced(object sender, ESRI.ArcGIS.Controls.IPageLayoutControlEvents_OnPageLayoutReplacedEvent e)
{
//Clear the combo box
comboBox1.Items.Clear();
//Get IGeoFeatureLayers CLSID
UID uid = new UIDClass();
uid.Value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}";
//Get IGeoFeatureLayers from the focus map
IEnumLayer layers = axPageLayoutControl1.ActiveView.FocusMap.get_Layers(uid, true);
if (layers == null) return;
//Reset enumeration and loop through layers
layers.Reset();
IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer) layers.Next();
while (geoFeatureLayer != null)
{
//If layer contains polygon features add to combo box
if (geoFeatureLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon)
{
if ((geoFeatureLayer is IGroupLayer) == false) comboBox1.Items.Add(geoFeatureLayer.Name);
}
geoFeatureLayer = (IGeoFeatureLayer) layers.Next();
}
comboBox1.SelectedIndex = 0;
//Enable controls
button1.Enabled = true;
comboBox1.Enabled = true;
}
private void button1_Click(object sender, System.EventArgs e)
{
//Get the layer selected in the combo box
IGeoFeatureLayer geofeaturelayer = null;
IMap map = axPageLayoutControl1.ActiveView.FocusMap;
for (int i=0; i<= map.LayerCount-1; i++)
{
if (map.get_Layer(i).Name == comboBox1.SelectedItem.ToString())
{
geofeaturelayer = (IGeoFeatureLayer) map.get_Layer(i);
break;
}
}
if (geofeaturelayer == null) return;
//Create ClassBreaks form
Form2 classBreaksForm = new Form2();
//Get a ClassBreakRenderer that uses the selected ColorRamp
IClassBreaksRenderer classBreaksRenderer = classBreaksForm.GetClassBreaksRenderer(geofeaturelayer);
if (classBreaksRenderer == null) return;
//Set the new renderer
geofeaturelayer.Renderer = (IFeatureRenderer) classBreaksRenderer;
//Trigger contents changed event for TOCControl
axPageLayoutControl1.ActiveView.ContentsChanged();
//Refresh the display
axPageLayoutControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, geofeaturelayer, null);
//Dispose of the form
classBreaksForm.Dispose();
}
}
}
[Visual Basic .NET]
ColorRamps.vb
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'Load runtime
If Not RuntimeManager.Bind(ProductCode.Engine) Then
If Not RuntimeManager.Bind(ProductCode.Desktop) Then
MessageBox.Show("Unable to bind to ArcGIS runtime. Application will be shut down.")
System.Environment.Exit(1) ' Force exit or other indication in the application
End If
End If
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
'Release COM objects
ESRI.ArcGIS.ADF.COMSupport.AOUninitialize.Shutdown()
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents AxPageLayoutControl1 As ESRI.ArcGIS.Controls.AxPageLayoutControl
Friend WithEvents AxToolbarControl1 As ESRI.ArcGIS.Controls.AxToolbarControl
Friend WithEvents AxTOCControl1 As ESRI.ArcGIS.Controls.AxTOCControl
Friend WithEvents AxLicenseControl1 As ESRI.ArcGIS.Controls.AxLicenseControl
Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
Me.AxPageLayoutControl1 = New ESRI.ArcGIS.Controls.AxPageLayoutControl
Me.AxToolbarControl1 = New ESRI.ArcGIS.Controls.AxToolbarControl
Me.AxTOCControl1 = New ESRI.ArcGIS.Controls.AxTOCControl
Me.AxLicenseControl1 = New ESRI.ArcGIS.Controls.AxLicenseControl
Me.ComboBox1 = New System.Windows.Forms.ComboBox
Me.Button1 = New System.Windows.Forms.Button
CType(Me.AxPageLayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.AxToolbarControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.AxTOCControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.AxLicenseControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'AxPageLayoutControl1
'
Me.AxPageLayoutControl1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.AxPageLayoutControl1.Location = New System.Drawing.Point(200, 40)
Me.AxPageLayoutControl1.Name = "AxPageLayoutControl1"
Me.AxPageLayoutControl1.OcxState = CType(resources.GetObject("AxPageLayoutControl1.OcxState"), System.Windows.Forms.AxHost.State)
Me.AxPageLayoutControl1.Size = New System.Drawing.Size(472, 376)
Me.AxPageLayoutControl1.TabIndex = 0
'
'AxToolbarControl1
'
Me.AxToolbarControl1.Location = New System.Drawing.Point(8, 8)
Me.AxToolbarControl1.Name = "AxToolbarControl1"
Me.AxToolbarControl1.OcxState = CType(resources.GetObject("AxToolbarControl1.OcxState"), System.Windows.Forms.AxHost.State)
Me.AxToolbarControl1.Size = New System.Drawing.Size(408, 28)
Me.AxToolbarControl1.TabIndex = 1
'
'AxTOCControl1
'
Me.AxTOCControl1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.AxTOCControl1.Location = New System.Drawing.Point(8, 40)
Me.AxTOCControl1.Name = "AxTOCControl1"
Me.AxTOCControl1.OcxState = CType(resources.GetObject("AxTOCControl1.OcxState"), System.Windows.Forms.AxHost.State)
Me.AxTOCControl1.Size = New System.Drawing.Size(184, 376)
Me.AxTOCControl1.TabIndex = 2
'
'AxLicenseControl1
'
Me.AxLicenseControl1.Enabled = True
Me.AxLicenseControl1.Location = New System.Drawing.Point(184, 136)
Me.AxLicenseControl1.Name = "AxLicenseControl1"
Me.AxLicenseControl1.OcxState = CType(resources.GetObject("AxLicenseControl1.OcxState"), System.Windows.Forms.AxHost.State)
Me.AxLicenseControl1.Size = New System.Drawing.Size(32, 32)
Me.AxLicenseControl1.TabIndex = 3
'
'ComboBox1
'
Me.ComboBox1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.ComboBox1.Location = New System.Drawing.Point(424, 8)
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(121, 21)
Me.ComboBox1.TabIndex = 4
Me.ComboBox1.Text = "ComboBox1"
'
'Button1
'
Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Button1.Location = New System.Drawing.Point(552, 8)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(120, 23)
Me.Button1.TabIndex = 5
Me.Button1.Text = "Change Color Ramp"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(680, 422)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.ComboBox1)
Me.Controls.Add(Me.AxLicenseControl1)
Me.Controls.Add(Me.AxTOCControl1)
Me.Controls.Add(Me.AxToolbarControl1)
Me.Controls.Add(Me.AxPageLayoutControl1)
Me.Name = "Form1"
Me.Text = "Color Ramps"
CType(Me.AxPageLayoutControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.AxToolbarControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.AxTOCControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.AxLicenseControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Set buddy control
AxToolbarControl1.SetBuddyControl(AxPageLayoutControl1)
AxTOCControl1.SetBuddyControl(AxPageLayoutControl1)
'Add ToolbarControl items
AxToolbarControl1.AddItem("esriControls.ControlsOpenDocCommand")
AxToolbarControl1.AddItem("esriControls.ControlsSaveAsDocCommand")
AxToolbarControl1.AddItem("esriControls.ControlsPageZoomInTool")
AxToolbarControl1.AddItem("esriControls.ControlsPageZoomOutTool")
AxToolbarControl1.AddItem("esriControls.ControlsPageZoomWholePageCommand")
AxToolbarControl1.AddItem("esriControls.ControlsMapZoomInTool")
AxToolbarControl1.AddItem("esriControls.ControlsMapZoomOutTool")
AxToolbarControl1.AddItem("esriControls.ControlsMapPanTool")
AxToolbarControl1.AddItem("esriControls.ControlsMapFullExtentCommand")
AxToolbarControl1.AddItem("esriControls.ControlsMapIdentifyTool")
'Disable controls
Button1.Enabled = False
ComboBox1.Enabled = False
End Sub
Private Sub AxPageLayoutControl1_OnPageLayoutReplaced(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Controls.IPageLayoutControlEvents_OnPageLayoutReplacedEvent) Handles AxPageLayoutControl1.OnPageLayoutReplaced
'Clear the combo box
ComboBox1.Items.Clear()
'Get IGeoFeatureLayers CLSID
Dim uid As UID = New UIDClass
uid.Value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}"
'Get IGeoFeatureLayers from the focus map
Dim layers As IEnumLayer
layers = AxPageLayoutControl1.ActiveView.FocusMap.Layers(uid, True)
If layers Is Nothing Then Exit Sub
'Reset enumeration and loop through layers
layers.Reset()
Dim geoFeatureLayer As IGeoFeatureLayer = layers.Next()
While Not geoFeatureLayer Is Nothing
'If layer contains polygon features add to combo box
If geoFeatureLayer.FeatureClass.ShapeType = esriGeometryType.esriGeometryPolygon Then
If Not TypeOf geoFeatureLayer Is IGroupLayer Then
ComboBox1.Items.Add(geoFeatureLayer.Name)
End If
End If
geoFeatureLayer = layers.Next()
End While
ComboBox1.SelectedIndex = 0
'Enable controls
Button1.Enabled = True
ComboBox1.Enabled = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Get the layer selected in the combo box
Dim i As Integer, map As IMap, geofeaturelayer As IGeoFeatureLayer = Nothing
map = AxPageLayoutControl1.ActiveView.FocusMap
For i = 0 To map.LayerCount - 1
If map.Layer(i).Name = ComboBox1.SelectedItem Then
geofeaturelayer = map.Layer(i)
Exit For
End If
Next i
If geofeaturelayer Is Nothing Then Exit Sub
'Create ClassBreaks form
Dim classBreaksForm As Form2 = New Form2
'Get a ClassBreakRenderer that uses the selected ColorRamp
Dim classBreaksRenderer As IClassBreaksRenderer
classBreaksRenderer = classBreaksForm.GetClassBreaksRenderer(geofeaturelayer)
If classBreaksRenderer Is Nothing Then Exit Sub
'Set the new renderer
geofeaturelayer.Renderer = classBreaksRenderer
'Trigger contents changed event for TOCControl
AxPageLayoutControl1.ActiveView.ContentsChanged()
'Refresh the display
AxPageLayoutControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, geofeaturelayer, Nothing)
'Dispose of the form
classBreaksForm.Dispose()
End Sub
End Class