About the Multivariate renderer Sample
[C#]
PropPageForm.cs
using System;
using System.Collections;
using System.Data;
using System.Diagnostics;
using ESRI.ArcGIS.Framework;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.CartoUI;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
namespace MultivariateRenderers
{
public class PropPageForm : System.Windows.Forms.Form
{
private enum eRendererType: int
{
eShapePattern,
eColor,
eSize
}
private bool m_PageIsDirty = false;
private IComPropertyPageSite m_pSite;
private IMap m_pMap;
private IGeoFeatureLayer m_pCurrentLayer;
private IFeatureRenderer m_pRend;
private IFeatureRenderer[] m_pShapePatternRendList;
private IFeatureRenderer[] m_pColorRendList; // we could have separate lists for hue, sat/val, etc, but keep it simple for now
private IFeatureRenderer[] m_pSizeRendList;
private EColorCombinationType m_eColorCombinationMethod;
private IFeatureRenderer m_pShapePatternRend;
private IFeatureRenderer m_pColorRend1;
private IFeatureRenderer m_pColorRend2;
private IFeatureRenderer m_pSizeRend;
#region Windows Form Designer generated code
public PropPageForm() : base()
{
//This call is required by the Windows Form Designer.
InitializeComponent();
//Add any initialization after the InitializeComponent() call
}
//Form overrides dispose to clean up the component list.
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
components.Dispose();
}
base.Dispose(disposing);
}
//Required by the Windows Form Designer
private System.ComponentModel.IContainer components;
//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.
internal System.Windows.Forms.ComboBox cboShapePattern;
internal System.Windows.Forms.ComboBox cboHue;
internal System.Windows.Forms.CheckBox chkShapePattern;
internal System.Windows.Forms.CheckBox chkColor;
internal System.Windows.Forms.RadioButton radComponents;
internal System.Windows.Forms.Label lblHue;
internal System.Windows.Forms.Label lblPrimaryColor;
internal System.Windows.Forms.RadioButton radCombination;
internal System.Windows.Forms.ComboBox cboPrimaryColor;
internal System.Windows.Forms.ComboBox cboSatValue;
internal System.Windows.Forms.Label lblSatValue;
internal System.Windows.Forms.Label lblSecondaryColor;
internal System.Windows.Forms.ComboBox cboSecondaryColor;
internal System.Windows.Forms.CheckBox chkSize;
internal System.Windows.Forms.ComboBox cboSize;
internal System.Windows.Forms.CheckBox chkRotation;
internal System.Windows.Forms.Button butRotation;
internal System.Windows.Forms.ComboBox cboSize1;
[System.Diagnostics.DebuggerStepThrough()]
private void InitializeComponent()
{
this.cboShapePattern = new System.Windows.Forms.ComboBox();
this.cboHue = new System.Windows.Forms.ComboBox();
this.chkShapePattern = new System.Windows.Forms.CheckBox();
this.chkColor = new System.Windows.Forms.CheckBox();
this.radComponents = new System.Windows.Forms.RadioButton();
this.lblHue = new System.Windows.Forms.Label();
this.lblPrimaryColor = new System.Windows.Forms.Label();
this.radCombination = new System.Windows.Forms.RadioButton();
this.cboPrimaryColor = new System.Windows.Forms.ComboBox();
this.cboSatValue = new System.Windows.Forms.ComboBox();
this.lblSatValue = new System.Windows.Forms.Label();
this.lblSecondaryColor = new System.Windows.Forms.Label();
this.cboSecondaryColor = new System.Windows.Forms.ComboBox();
this.chkSize = new System.Windows.Forms.CheckBox();
this.chkRotation = new System.Windows.Forms.CheckBox();
this.butRotation = new System.Windows.Forms.Button();
this.cboSize1 = new System.Windows.Forms.ComboBox();
this.SuspendLayout();
//
// cboShapePattern
//
this.cboShapePattern.Location = new System.Drawing.Point(224, 11);
this.cboShapePattern.Name = "cboShapePattern";
this.cboShapePattern.Size = new System.Drawing.Size(121, 21);
this.cboShapePattern.TabIndex = 24;
this.cboShapePattern.SelectedIndexChanged += new System.EventHandler(this.cboShapePattern_SelectedIndexChanged);
//
// cboHue
//
this.cboHue.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboHue.Enabled = false;
this.cboHue.Location = new System.Drawing.Point(224, 48);
this.cboHue.Name = "cboHue";
this.cboHue.Size = new System.Drawing.Size(192, 21);
this.cboHue.TabIndex = 5;
this.cboHue.EnabledChanged += new System.EventHandler(this.cboHue_EnabledChanged);
this.cboHue.SelectedIndexChanged += new System.EventHandler(this.cboHue_SelectedIndexChanged);
//
// chkShapePattern
//
this.chkShapePattern.Location = new System.Drawing.Point(8, 8);
this.chkShapePattern.Name = "chkShapePattern";
this.chkShapePattern.Size = new System.Drawing.Size(152, 24);
this.chkShapePattern.TabIndex = 6;
this.chkShapePattern.Text = "Shape/Pattern";
this.chkShapePattern.CheckedChanged += new System.EventHandler(this.chkShapePattern_CheckedChanged);
//
// chkColor
//
this.chkColor.Location = new System.Drawing.Point(8, 32);
this.chkColor.Name = "chkColor";
this.chkColor.Size = new System.Drawing.Size(152, 24);
this.chkColor.TabIndex = 7;
this.chkColor.Text = "Color";
this.chkColor.CheckedChanged += new System.EventHandler(this.chkColor_CheckedChanged);
//
// radComponents
//
this.radComponents.Enabled = false;
this.radComponents.Location = new System.Drawing.Point(24, 56);
this.radComponents.Name = "radComponents";
this.radComponents.Size = new System.Drawing.Size(128, 24);
this.radComponents.TabIndex = 8;
this.radComponents.Text = "Color Components";
this.radComponents.CheckedChanged += new System.EventHandler(this.radComponents_CheckedChanged);
this.radComponents.EnabledChanged += new System.EventHandler(this.radComponents_EnabledChanged);
//
// lblHue
//
this.lblHue.Enabled = false;
this.lblHue.Location = new System.Drawing.Point(136, 48);
this.lblHue.Name = "lblHue";
this.lblHue.Size = new System.Drawing.Size(88, 24);
this.lblHue.TabIndex = 9;
this.lblHue.Text = "Hue";
//
// lblPrimaryColor
//
this.lblPrimaryColor.Enabled = false;
this.lblPrimaryColor.Location = new System.Drawing.Point(136, 104);
this.lblPrimaryColor.Name = "lblPrimaryColor";
this.lblPrimaryColor.Size = new System.Drawing.Size(88, 24);
this.lblPrimaryColor.TabIndex = 12;
this.lblPrimaryColor.Text = "Color 1";
//
// radCombination
//
this.radCombination.Enabled = false;
this.radCombination.Location = new System.Drawing.Point(24, 112);
this.radCombination.Name = "radCombination";
this.radCombination.Size = new System.Drawing.Size(128, 24);
this.radCombination.TabIndex = 11;
this.radCombination.Text = "Color Combination";
this.radCombination.CheckedChanged += new System.EventHandler(this.radCombination_CheckedChanged);
this.radCombination.EnabledChanged += new System.EventHandler(this.radCombination_EnabledChanged);
//
// cboPrimaryColor
//
this.cboPrimaryColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboPrimaryColor.Enabled = false;
this.cboPrimaryColor.Location = new System.Drawing.Point(224, 104);
this.cboPrimaryColor.Name = "cboPrimaryColor";
this.cboPrimaryColor.Size = new System.Drawing.Size(192, 21);
this.cboPrimaryColor.TabIndex = 10;
this.cboPrimaryColor.EnabledChanged += new System.EventHandler(this.cboPrimaryColor_EnabledChanged);
this.cboPrimaryColor.SelectedIndexChanged += new System.EventHandler(this.cboPrimaryColor_SelectedIndexChanged);
//
// cboSatValue
//
this.cboSatValue.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboSatValue.Enabled = false;
this.cboSatValue.Location = new System.Drawing.Point(224, 72);
this.cboSatValue.Name = "cboSatValue";
this.cboSatValue.Size = new System.Drawing.Size(192, 21);
this.cboSatValue.TabIndex = 13;
this.cboSatValue.EnabledChanged += new System.EventHandler(this.cboSatValue_EnabledChanged);
this.cboSatValue.SelectedIndexChanged += new System.EventHandler(this.cboSatValue_selectedIndexChanged);
//
// lblSatValue
//
this.lblSatValue.Enabled = false;
this.lblSatValue.Location = new System.Drawing.Point(136, 72);
this.lblSatValue.Name = "lblSatValue";
this.lblSatValue.Size = new System.Drawing.Size(88, 24);
this.lblSatValue.TabIndex = 14;
this.lblSatValue.Text = "Saturation/Value";
//
// lblSecondaryColor
//
this.lblSecondaryColor.Enabled = false;
this.lblSecondaryColor.Location = new System.Drawing.Point(136, 128);
this.lblSecondaryColor.Name = "lblSecondaryColor";
this.lblSecondaryColor.Size = new System.Drawing.Size(88, 24);
this.lblSecondaryColor.TabIndex = 16;
this.lblSecondaryColor.Text = "Color 2";
//
// cboSecondaryColor
//
this.cboSecondaryColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboSecondaryColor.Enabled = false;
this.cboSecondaryColor.Location = new System.Drawing.Point(224, 128);
this.cboSecondaryColor.Name = "cboSecondaryColor";
this.cboSecondaryColor.Size = new System.Drawing.Size(192, 21);
this.cboSecondaryColor.TabIndex = 15;
this.cboSecondaryColor.EnabledChanged += new System.EventHandler(this.cboSecondaryColor_EnabledChanged);
this.cboSecondaryColor.SelectedIndexChanged += new System.EventHandler(this.cboSecondaryColor_SelectedIndexChanged);
//
// chkSize
//
this.chkSize.Location = new System.Drawing.Point(8, 160);
this.chkSize.Name = "chkSize";
this.chkSize.Size = new System.Drawing.Size(152, 24);
this.chkSize.TabIndex = 18;
this.chkSize.Text = "Size";
this.chkSize.CheckedChanged += new System.EventHandler(this.chkSize_CheckedChanged);
//
// chkRotation
//
this.chkRotation.Location = new System.Drawing.Point(8, 192);
this.chkRotation.Name = "chkRotation";
this.chkRotation.Size = new System.Drawing.Size(152, 24);
this.chkRotation.TabIndex = 19;
this.chkRotation.Text = "Rotation";
this.chkRotation.CheckedChanged += new System.EventHandler(this.chkRotation_CheckedChanged);
//
// butRotation
//
this.butRotation.Enabled = false;
this.butRotation.Location = new System.Drawing.Point(224, 192);
this.butRotation.Name = "butRotation";
this.butRotation.Size = new System.Drawing.Size(192, 24);
this.butRotation.TabIndex = 21;
this.butRotation.Text = "Properties";
this.butRotation.Click += new System.EventHandler(this.butRotation_Click);
//
// cboSize1
//
this.cboSize1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboSize1.Enabled = false;
this.cboSize1.Location = new System.Drawing.Point(224, 160);
this.cboSize1.Name = "cboSize1";
this.cboSize1.Size = new System.Drawing.Size(192, 21);
this.cboSize1.TabIndex = 23;
this.cboSize1.SelectedIndexChanged += new System.EventHandler(this.cboSize1_selectedindexchanged);
//
// PropPageForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(424, 285);
this.Controls.Add(this.cboSize1);
this.Controls.Add(this.butRotation);
this.Controls.Add(this.chkRotation);
this.Controls.Add(this.chkSize);
this.Controls.Add(this.lblSecondaryColor);
this.Controls.Add(this.cboSecondaryColor);
this.Controls.Add(this.lblSatValue);
this.Controls.Add(this.cboSatValue);
this.Controls.Add(this.lblPrimaryColor);
this.Controls.Add(this.radCombination);
this.Controls.Add(this.cboPrimaryColor);
this.Controls.Add(this.lblHue);
this.Controls.Add(this.radComponents);
this.Controls.Add(this.chkColor);
this.Controls.Add(this.chkShapePattern);
this.Controls.Add(this.cboHue);
this.Controls.Add(this.cboShapePattern);
this.Name = "PropPageForm";
this.Text = "ColorPropPageForm";
this.Load += new System.EventHandler(this.PropPageForm_Load);
this.ResumeLayout(false);
}
#endregion
public bool IsDirty
{
get
{
return m_PageIsDirty;
}
}
public IComPropertyPageSite PageSite
{
set
{
m_pSite = value;
}
}
public void InitControls(IMultivariateRenderer pMultiRend, IMap pMap, IGeoFeatureLayer pGeoLayer)
{
// copy properties from the renderer and map to the form
m_eColorCombinationMethod = pMultiRend.ColorCombinationMethod;
m_pShapePatternRend = pMultiRend.ShapePatternRend;
m_pColorRend1 = pMultiRend.ColorRend1;
m_pColorRend2 = pMultiRend.ColorRend2;
m_pSizeRend = pMultiRend.SizeRend;
if (m_pShapePatternRend != null)
{
chkShapePattern.CheckState = System.Windows.Forms.CheckState.Checked;
cboShapePattern.Enabled = true;
}
if (m_eColorCombinationMethod == EColorCombinationType.enuComponents)
{
radComponents.Checked = true;
radCombination.Checked = false;
UpdateColorComb();
}
else
{
//disabled
//radComponents.Checked = false;
//radCombination.Checked = true;
radComponents.Checked = true;
radCombination.Checked = false;
UpdateColorComb();
}
if (m_pColorRend1 != null)
{
chkColor.CheckState = System.Windows.Forms.CheckState.Checked;
radComponents.Enabled = true;
//disabled
//radCombination.Enabled = true;
radCombination.Enabled = false;
}
if (m_pSizeRend != null)
{
chkSize.CheckState = System.Windows.Forms.CheckState.Checked;
cboSize1.Enabled = true;
}
IRotationRenderer pRotRend = null;
pRotRend = pMultiRend as IRotationRenderer;
if (pRotRend.RotationField != "")
{
chkRotation.CheckState = System.Windows.Forms.CheckState.Checked;
butRotation.Enabled = true;
}
//ITransparencyRenderer pTransRend = null;
//pTransRend = pMultiRend as ITransparencyRenderer;
//if (pTransRend.TransparencyField != "")
//{
// chkTransparency.CheckState = System.Windows.Forms.CheckState.Checked;
// butTransparency.Enabled = true;
//}
m_pMap = pMap;
m_pCurrentLayer = pGeoLayer;
m_pRend = pMultiRend as IFeatureRenderer; // we need this object to support the root transparency dialogs
m_PageIsDirty = false;
}
public void InitRenderer(IMultivariateRenderer pMultiRend)
{
// copy properties from the form to the renderer
if (chkShapePattern.CheckState == System.Windows.Forms.CheckState.Checked)
pMultiRend.ShapePatternRend = m_pShapePatternRend;
else
pMultiRend.ShapePatternRend = null;
if (chkColor.CheckState == System.Windows.Forms.CheckState.Checked)
{
pMultiRend.ColorRend1 = m_pColorRend1;
pMultiRend.ColorRend2 = m_pColorRend2;
pMultiRend.ColorCombinationMethod = m_eColorCombinationMethod;
}
else
{
pMultiRend.ColorRend1 = null;
pMultiRend.ColorRend2 = null;
pMultiRend.ColorCombinationMethod = EColorCombinationType.enuCIELabMatrix; // default (?)
}
if (chkSize.CheckState == System.Windows.Forms.CheckState.Checked)
pMultiRend.SizeRend = m_pSizeRend;
else
pMultiRend.SizeRend = null;
IRotationRenderer pRotRend = null;
IRotationRenderer pFormRotRend = null;
pRotRend = pMultiRend as IRotationRenderer;
if (chkRotation.CheckState == System.Windows.Forms.CheckState.Checked)
{
pFormRotRend = m_pRend as IRotationRenderer;
pRotRend.RotationField = pFormRotRend.RotationField;
pRotRend.RotationType = pFormRotRend.RotationType;
}
else
{
pRotRend.RotationField = "";
pRotRend.RotationType = esriSymbolRotationType.esriRotateSymbolArithmetic; // default (?)
}
//ITransparencyRenderer pTransRend = null;
//ITransparencyRenderer pFormTransRend = null;
//pTransRend = pMultiRend as ITransparencyRenderer;
//if (chkTransparency.CheckState == System.Windows.Forms.CheckState.Checked)
//{
// pFormTransRend = m_pRend as ITransparencyRenderer;
// pTransRend.TransparencyField = pFormTransRend.TransparencyField;
//}
//else
// pTransRend.TransparencyField = "";
}
private void PropPageForm_Load(object sender, System.EventArgs e)
{
// initialize form controls from data members
IEnumLayer pGeoLayers = null;
UID pUID = new UID();
pUID.Value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}";
pGeoLayers = m_pMap.get_Layers(pUID, true);
pGeoLayers.Reset();
IGeoFeatureLayer pGeoLayer = null;
IFeatureRenderer pFeatRend = null;
int iColor = 0;
int iShapePattern = 0;
int iSize = 0;
pGeoLayer = pGeoLayers.Next() as IGeoFeatureLayer;
string sColor1 = "";
string sColor2 = "";
string sShapePattern = "";
string sSize = "";
while (pGeoLayer != null)
{
// to keep things simple, filter for layers with same feat class geometry (point, line, poly) as current layer
if ((pGeoLayer.FeatureClass.ShapeType) == (m_pCurrentLayer.FeatureClass.ShapeType))
{
// filter out the current layer
if (! (pGeoLayer == m_pCurrentLayer))
{
pFeatRend = pGeoLayer.Renderer;
// filter for only layers currently assigned a renderer that is valid for each renderer type (shape, color, size)
if (RendererIsValidForType(pFeatRend, eRendererType.eColor))
{
iColor = iColor + 1;
System.Array.Resize(ref m_pColorRendList, iColor + 1);
m_pColorRendList[iColor - 1] = pFeatRend;
cboHue.Items.Add(pGeoLayer.Name);
cboSatValue.Items.Add(pGeoLayer.Name);
cboPrimaryColor.Items.Add(pGeoLayer.Name);
cboSecondaryColor.Items.Add(pGeoLayer.Name);
if (CompareRenderers(pGeoLayer.Renderer, m_pColorRend1))
sColor1 = pGeoLayer.Name;
if (CompareRenderers(pGeoLayer.Renderer, m_pColorRend2))
sColor2 = pGeoLayer.Name;
}
if (RendererIsValidForType(pFeatRend, eRendererType.eShapePattern))
{
iShapePattern = iShapePattern + 1;
System.Array.Resize(ref m_pShapePatternRendList, iShapePattern + 1);
m_pShapePatternRendList[iShapePattern - 1] = pFeatRend;
cboShapePattern.Items.Add(pGeoLayer.Name);
//if (pGeoLayer.Renderer == m_pShapePatternRend)
// sShapePattern = pGeoLayer.Name;
if (CompareRenderers(pGeoLayer.Renderer, m_pShapePatternRend))
sShapePattern = pGeoLayer.Name;
}
if (RendererIsValidForType(pFeatRend, eRendererType.eSize))
{
iSize = iSize + 1;
System.Array.Resize(ref m_pSizeRendList, iSize + 1);
m_pSizeRendList[iSize - 1] = pFeatRend;
cboSize1.Items.Add(pGeoLayer.Name);
//if (pGeoLayer.Renderer == m_pSizeRend)
// sSize = pGeoLayer.Name;
if (CompareRenderers(pGeoLayer.Renderer, m_pSizeRend))
sSize = pGeoLayer.Name;
}
}
}
pGeoLayer = pGeoLayers.Next() as IGeoFeatureLayer;
}
// select correct items in combos
cboShapePattern.Text = sShapePattern;
if (radComponents.Checked)
{
cboHue.Text = sColor1;
cboSatValue.Text = sColor2;
}
else
{
cboPrimaryColor.Text = sColor1;
cboSecondaryColor.Text = sColor2;
}
cboSize1.Text = sSize;
// disable if there aren't any layers in the map of the correct type
if (iShapePattern <= 0)
cboShapePattern.Enabled = false;
if (iColor <= 0)
{
if (radComponents.Checked)
{
cboHue.Enabled = false;
cboSatValue.Enabled = false;
}
else
{
cboPrimaryColor.Enabled = false;
cboSecondaryColor.Enabled = false;
}
}
if (iSize <= 0)
cboSize1.Enabled = false;
}
private void cboShapePattern_SelectedIndexChanged(object sender, System.EventArgs e)
{
m_pShapePatternRend = m_pShapePatternRendList[cboShapePattern.SelectedIndex];
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void cboHue_SelectedIndexChanged(object sender, System.EventArgs e)
{
m_pColorRend1 = m_pColorRendList[cboHue.SelectedIndex];
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void cboSatValue_selectedIndexChanged(object sender, System.EventArgs e)
{
m_pColorRend2 = m_pColorRendList[cboSatValue.SelectedIndex];
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void cboPrimaryColor_SelectedIndexChanged(object sender, System.EventArgs e)
{
m_pColorRend1 = m_pColorRendList[cboPrimaryColor.SelectedIndex];
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void cboSecondaryColor_SelectedIndexChanged(object sender, System.EventArgs e)
{
m_pColorRend2 = m_pColorRendList[cboSecondaryColor.SelectedIndex];
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void cboSize1_selectedindexchanged(object sender, System.EventArgs e)
{
m_pSizeRend = m_pSizeRendList[cboSize1.SelectedIndex];
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void radComponents_CheckedChanged(object sender, System.EventArgs e)
{
UpdateColorComb();
}
private void radCombination_CheckedChanged(object sender, System.EventArgs e)
{
UpdateColorComb();
}
private void UpdateColorComb()
{
if (radComponents.Checked)
{
m_eColorCombinationMethod = EColorCombinationType.enuComponents;
cboHue.Enabled = true;
cboSatValue.Enabled = true;
cboPrimaryColor.Enabled = false;
cboSecondaryColor.Enabled = false;
}
else
{
m_eColorCombinationMethod = EColorCombinationType.enuCIELabMatrix;
cboHue.Enabled = false;
cboSatValue.Enabled = false;
cboPrimaryColor.Enabled = true;
cboSecondaryColor.Enabled = true;
}
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private bool RendererIsValidForType(IFeatureRenderer pFeatRend, eRendererType eMultiRendType)
{
// indicates whether or not pFeatRend is valid for the eMultiRendType for the current layer
// e.g. if pFeatRend is an IProportionalSymbolRenderer, then it's valid for eMultiRendType = eSize
ILegendInfo pLegendInfo = null;
if (eMultiRendType == eRendererType.eShapePattern)
return pFeatRend is IUniqueValueRenderer;
else if (eMultiRendType == eRendererType.eColor)
{
pLegendInfo = pFeatRend as ILegendInfo;
return (pFeatRend is IUniqueValueRenderer) | (pFeatRend is IClassBreaksRenderer & ! pLegendInfo.SymbolsAreGraduated);
}
else // size
{
pLegendInfo = pFeatRend as ILegendInfo;
return (pFeatRend is IClassBreaksRenderer & pLegendInfo.SymbolsAreGraduated) | (pFeatRend is IProportionalSymbolRenderer);
}
}
private void butRotation_Click(object sender, System.EventArgs e)
{
IRendererUIDialog2 pRendUIDlg2 = null;
pRendUIDlg2 = new MarkerRotationDialog() as IRendererUIDialog2;
pRendUIDlg2.FeatureLayer = m_pCurrentLayer;
pRendUIDlg2.Renderer = m_pRend;
SecondaryForm pMyForm = null;
pMyForm = new SecondaryForm();
pRendUIDlg2.DoModal(pMyForm.Handle.ToInt32());
}
private void chkShapePattern_CheckedChanged(object sender, System.EventArgs e)
{
cboShapePattern.Enabled = (chkShapePattern.CheckState == System.Windows.Forms.CheckState.Checked);
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void chkColor_CheckedChanged(object sender, System.EventArgs e)
{
radComponents.Enabled = (chkColor.CheckState == System.Windows.Forms.CheckState.Checked);
//radCombination.Enabled = (chkColor.CheckState == System.Windows.Forms.CheckState.Checked);
radCombination.Enabled = false;
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void chkSize_CheckedChanged(object sender, System.EventArgs e)
{
cboSize1.Enabled = (chkSize.CheckState == System.Windows.Forms.CheckState.Checked);
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
private void chkRotation_CheckedChanged(object sender, System.EventArgs e)
{
butRotation.Enabled = (chkRotation.CheckState == System.Windows.Forms.CheckState.Checked);
if (m_pSite != null)
m_pSite.PageChanged();
m_PageIsDirty = true;
}
//private void chkTransparency_CheckedChanged(object sender, System.EventArgs e)
//{
// butTransparency.Enabled = (chkTransparency.CheckState == System.Windows.Forms.CheckState.Checked);
// if (m_pSite != null)
// m_pSite.PageChanged();
// m_PageIsDirty = true;
//}
private void radComponents_EnabledChanged(object sender, System.EventArgs e)
{
cboHue.Enabled = radComponents.Enabled & radComponents.Checked;
cboSatValue.Enabled = radComponents.Enabled & radComponents.Checked;
}
private void radCombination_EnabledChanged(object sender, System.EventArgs e)
{
//disabled
//cboPrimaryColor.Enabled = radCombination.Enabled & radCombination.Checked;
//cboSecondaryColor.Enabled = radCombination.Enabled & radCombination.Checked;
cboPrimaryColor.Enabled = false;
cboSecondaryColor.Enabled = false;
}
private void cboHue_EnabledChanged(object sender, System.EventArgs e)
{
lblHue.Enabled = cboHue.Enabled;
}
private void cboSatValue_EnabledChanged(object sender, System.EventArgs e)
{
lblSatValue.Enabled = cboSatValue.Enabled;
}
private void cboPrimaryColor_EnabledChanged(object sender, System.EventArgs e)
{
lblPrimaryColor.Enabled = cboPrimaryColor.Enabled;
}
private void cboSecondaryColor_EnabledChanged(object sender, System.EventArgs e)
{
lblSecondaryColor.Enabled = cboSecondaryColor.Enabled;
}
private bool CompareRenderers(IFeatureRenderer pRend, IFeatureRenderer pCheckRend)
{
if (pRend is IClassBreaksRenderer)
{
// type
if (! (pCheckRend is IClassBreaksRenderer))
return false;
IClassBreaksRenderer pCBRend = null;
pCBRend = pRend as IClassBreaksRenderer;
IClassBreaksRenderer pCBCheckRend = null;
pCBCheckRend = pCheckRend as IClassBreaksRenderer;
// break count
if (pCBRend.BreakCount != pCBCheckRend.BreakCount)
return false;
// field
if (pCBRend.Field != pCBCheckRend.Field)
return false;
}
return true;
}
}
} //end of root namespace
[Visual Basic .NET]
PropPageForm.vb
Imports ESRI.ArcGIS.Framework
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.CartoUI
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.Geodatabase
Imports ESRI.ArcGIS.Geometry
Public Class PropPageForm
Inherits System.Windows.Forms.Form
Private Enum eRendererType
eShapePattern
eColor
eSize
End Enum
Private m_PageIsDirty As Boolean = False
Private m_pSite As IComPropertyPageSite
Private m_pMap As IMap
Private m_pCurrentLayer As IGeoFeatureLayer
Private m_pRend As IFeatureRenderer
Private m_pShapePatternRendList() As IFeatureRenderer
Private m_pColorRendList() As IFeatureRenderer
Private m_pSizeRendList() As IFeatureRenderer
Private m_eColorCombinationMethod As EColorCombinationType
Private m_pShapePatternRend As IFeatureRenderer
Private m_pColorRend1 As IFeatureRenderer
Private m_pColorRend2 As IFeatureRenderer
Private m_pSizeRend As IFeatureRenderer
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'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)
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 cboShapePattern As System.Windows.Forms.ComboBox
Friend WithEvents cboHue As System.Windows.Forms.ComboBox
Friend WithEvents chkShapePattern As System.Windows.Forms.CheckBox
Friend WithEvents chkColor As System.Windows.Forms.CheckBox
Friend WithEvents radComponents As System.Windows.Forms.RadioButton
Friend WithEvents lblHue As System.Windows.Forms.Label
Friend WithEvents lblPrimaryColor As System.Windows.Forms.Label
Friend WithEvents radCombination As System.Windows.Forms.RadioButton
Friend WithEvents cboPrimaryColor As System.Windows.Forms.ComboBox
Friend WithEvents cboSatValue As System.Windows.Forms.ComboBox
Friend WithEvents lblSatValue As System.Windows.Forms.Label
Friend WithEvents lblSecondaryColor As System.Windows.Forms.Label
Friend WithEvents cboSecondaryColor As System.Windows.Forms.ComboBox
Friend WithEvents chkSize As System.Windows.Forms.CheckBox
Friend WithEvents cboSize As System.Windows.Forms.ComboBox
Friend WithEvents chkRotation As System.Windows.Forms.CheckBox
Friend WithEvents butRotation As System.Windows.Forms.Button
Friend WithEvents cboSize1 As System.Windows.Forms.ComboBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.cboShapePattern = New System.Windows.Forms.ComboBox
Me.cboHue = New System.Windows.Forms.ComboBox
Me.chkShapePattern = New System.Windows.Forms.CheckBox
Me.chkColor = New System.Windows.Forms.CheckBox
Me.radComponents = New System.Windows.Forms.RadioButton
Me.lblHue = New System.Windows.Forms.Label
Me.lblPrimaryColor = New System.Windows.Forms.Label
Me.radCombination = New System.Windows.Forms.RadioButton
Me.cboPrimaryColor = New System.Windows.Forms.ComboBox
Me.cboSatValue = New System.Windows.Forms.ComboBox
Me.lblSatValue = New System.Windows.Forms.Label
Me.lblSecondaryColor = New System.Windows.Forms.Label
Me.cboSecondaryColor = New System.Windows.Forms.ComboBox
Me.chkSize = New System.Windows.Forms.CheckBox
Me.chkRotation = New System.Windows.Forms.CheckBox
Me.butRotation = New System.Windows.Forms.Button
Me.cboSize1 = New System.Windows.Forms.ComboBox
Me.SuspendLayout()
'
'cboShapePattern
'
Me.cboShapePattern.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboShapePattern.Enabled = False
Me.cboShapePattern.Location = New System.Drawing.Point(224, 8)
Me.cboShapePattern.Name = "cboShapePattern"
Me.cboShapePattern.Size = New System.Drawing.Size(192, 21)
Me.cboShapePattern.TabIndex = 4
'
'cboHue
'
Me.cboHue.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboHue.Enabled = False
Me.cboHue.Location = New System.Drawing.Point(224, 48)
Me.cboHue.Name = "cboHue"
Me.cboHue.Size = New System.Drawing.Size(192, 21)
Me.cboHue.TabIndex = 5
'
'chkShapePattern
'
Me.chkShapePattern.Location = New System.Drawing.Point(8, 8)
Me.chkShapePattern.Name = "chkShapePattern"
Me.chkShapePattern.Size = New System.Drawing.Size(152, 24)
Me.chkShapePattern.TabIndex = 6
Me.chkShapePattern.Text = "Shape/Pattern"
'
'chkColor
'
Me.chkColor.Location = New System.Drawing.Point(8, 32)
Me.chkColor.Name = "chkColor"
Me.chkColor.Size = New System.Drawing.Size(152, 24)
Me.chkColor.TabIndex = 7
Me.chkColor.Text = "Color"
'
'radComponents
'
Me.radComponents.Enabled = False
Me.radComponents.Location = New System.Drawing.Point(24, 56)
Me.radComponents.Name = "radComponents"
Me.radComponents.Size = New System.Drawing.Size(128, 24)
Me.radComponents.TabIndex = 8
Me.radComponents.Text = "Color Components"
'
'lblHue
'
Me.lblHue.Enabled = False
Me.lblHue.Location = New System.Drawing.Point(136, 48)
Me.lblHue.Name = "lblHue"
Me.lblHue.Size = New System.Drawing.Size(88, 24)
Me.lblHue.TabIndex = 9
Me.lblHue.Text = "Hue"
'
'lblPrimaryColor
'
Me.lblPrimaryColor.Enabled = False
Me.lblPrimaryColor.Location = New System.Drawing.Point(136, 104)
Me.lblPrimaryColor.Name = "lblPrimaryColor"
Me.lblPrimaryColor.Size = New System.Drawing.Size(88, 24)
Me.lblPrimaryColor.TabIndex = 12
Me.lblPrimaryColor.Text = "Color 1"
'
'radCombination
'
Me.radCombination.Enabled = False
Me.radCombination.Location = New System.Drawing.Point(24, 112)
Me.radCombination.Name = "radCombination"
Me.radCombination.Size = New System.Drawing.Size(128, 24)
Me.radCombination.TabIndex = 11
Me.radCombination.Text = "Color Combination"
'
'cboPrimaryColor
'
Me.cboPrimaryColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboPrimaryColor.Enabled = False
Me.cboPrimaryColor.Location = New System.Drawing.Point(224, 104)
Me.cboPrimaryColor.Name = "cboPrimaryColor"
Me.cboPrimaryColor.Size = New System.Drawing.Size(192, 21)
Me.cboPrimaryColor.TabIndex = 10
'
'cboSatValue
'
Me.cboSatValue.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboSatValue.Enabled = False
Me.cboSatValue.Location = New System.Drawing.Point(224, 72)
Me.cboSatValue.Name = "cboSatValue"
Me.cboSatValue.Size = New System.Drawing.Size(192, 21)
Me.cboSatValue.TabIndex = 13
'
'lblSatValue
'
Me.lblSatValue.Enabled = False
Me.lblSatValue.Location = New System.Drawing.Point(136, 72)
Me.lblSatValue.Name = "lblSatValue"
Me.lblSatValue.Size = New System.Drawing.Size(88, 24)
Me.lblSatValue.TabIndex = 14
Me.lblSatValue.Text = "Saturation/Value"
'
'lblSecondaryColor
'
Me.lblSecondaryColor.Enabled = False
Me.lblSecondaryColor.Location = New System.Drawing.Point(136, 128)
Me.lblSecondaryColor.Name = "lblSecondaryColor"
Me.lblSecondaryColor.Size = New System.Drawing.Size(88, 24)
Me.lblSecondaryColor.TabIndex = 16
Me.lblSecondaryColor.Text = "Color 2"
'
'cboSecondaryColor
'
Me.cboSecondaryColor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboSecondaryColor.Enabled = False
Me.cboSecondaryColor.Location = New System.Drawing.Point(224, 128)
Me.cboSecondaryColor.Name = "cboSecondaryColor"
Me.cboSecondaryColor.Size = New System.Drawing.Size(192, 21)
Me.cboSecondaryColor.TabIndex = 15
'
'chkSize
'
Me.chkSize.Location = New System.Drawing.Point(8, 160)
Me.chkSize.Name = "chkSize"
Me.chkSize.Size = New System.Drawing.Size(152, 24)
Me.chkSize.TabIndex = 18
Me.chkSize.Text = "Size"
'
'chkRotation
'
Me.chkRotation.Location = New System.Drawing.Point(8, 192)
Me.chkRotation.Name = "chkRotation"
Me.chkRotation.Size = New System.Drawing.Size(152, 24)
Me.chkRotation.TabIndex = 19
Me.chkRotation.Text = "Rotation"
'
'butRotation
'
Me.butRotation.Enabled = False
Me.butRotation.Location = New System.Drawing.Point(224, 192)
Me.butRotation.Name = "butRotation"
Me.butRotation.Size = New System.Drawing.Size(192, 24)
Me.butRotation.TabIndex = 21
Me.butRotation.Text = "Properties"
'
'cboSize1
'
Me.cboSize1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboSize1.Enabled = False
Me.cboSize1.Location = New System.Drawing.Point(224, 160)
Me.cboSize1.Name = "cboSize1"
Me.cboSize1.Size = New System.Drawing.Size(192, 21)
Me.cboSize1.TabIndex = 23
'
'PropPageForm
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(424, 285)
Me.Controls.Add(Me.cboSize1)
Me.Controls.Add(Me.butRotation)
Me.Controls.Add(Me.chkRotation)
Me.Controls.Add(Me.chkSize)
Me.Controls.Add(Me.lblSecondaryColor)
Me.Controls.Add(Me.cboSecondaryColor)
Me.Controls.Add(Me.lblSatValue)
Me.Controls.Add(Me.cboSatValue)
Me.Controls.Add(Me.lblPrimaryColor)
Me.Controls.Add(Me.radCombination)
Me.Controls.Add(Me.cboPrimaryColor)
Me.Controls.Add(Me.lblHue)
Me.Controls.Add(Me.radComponents)
Me.Controls.Add(Me.chkColor)
Me.Controls.Add(Me.chkShapePattern)
Me.Controls.Add(Me.cboHue)
Me.Controls.Add(Me.cboShapePattern)
Me.Name = "PropPageForm"
Me.Text = "ColorPropPageForm"
Me.ResumeLayout(False)
End Sub
#End Region
Public ReadOnly Property IsDirty() As Boolean
Get
Return m_PageIsDirty
End Get
End Property
Public WriteOnly Property PageSite() As IComPropertyPageSite
Set(ByVal Value As IComPropertyPageSite)
m_pSite = Value
End Set
End Property
Public Sub InitControls(ByVal pMultiRend As IMultivariateRenderer, ByVal pMap As IMap, ByVal pGeoLayer As IGeoFeatureLayer)
m_eColorCombinationMethod = pMultiRend.ColorCombinationMethod
m_pShapePatternRend = pMultiRend.ShapePatternRend
m_pColorRend1 = pMultiRend.ColorRend1
m_pColorRend2 = pMultiRend.ColorRend2
m_pSizeRend = pMultiRend.SizeRend
If Not m_pShapePatternRend Is Nothing Then
chkShapePattern.CheckState = Windows.Forms.CheckState.Checked
cboShapePattern.Enabled = True
End If
If m_eColorCombinationMethod = EColorCombinationType.enuComponents Then
radComponents.Checked = True
radCombination.Checked = False
UpdateColorComb()
Else
'disabled
'radComponents.Checked = False
'radCombination.Checked = True
radComponents.Checked = True
radCombination.Checked = False
'added to disable color combination
m_eColorCombinationMethod = EColorCombinationType.enuComponents
UpdateColorComb()
End If
If Not m_pColorRend1 Is Nothing Then
chkColor.CheckState = Windows.Forms.CheckState.Checked
radComponents.Enabled = True
'disabled
'radCombination.Enabled = True
radCombination.Enabled = False
End If
If Not m_pSizeRend Is Nothing Then
chkSize.CheckState = Windows.Forms.CheckState.Checked
cboSize1.Enabled = True
End If
Dim pRotRend As IRotationRenderer
pRotRend = pMultiRend
If pRotRend.RotationField <> "" Then
chkRotation.CheckState = Windows.Forms.CheckState.Checked
butRotation.Enabled = True
End If
'Dim pTransRend As ITransparencyRenderer
'pTransRend = pMultiRend
'If pTransRend.TransparencyField <> "" Then
'chkTransparency.CheckState = Windows.Forms.CheckState.Checked
'butTransparency.Enabled = True
'End If
m_pMap = pMap
m_pCurrentLayer = pGeoLayer
m_pRend = pMultiRend ' we need this object to support the root transparency dialogs
m_PageIsDirty = False
End Sub
Public Sub InitRenderer(ByVal pMultiRend As IMultivariateRenderer)
' copy properties from the form to the renderer
If chkShapePattern.CheckState = Windows.Forms.CheckState.Checked Then
pMultiRend.ShapePatternRend = m_pShapePatternRend
Else
pMultiRend.ShapePatternRend = Nothing
End If
If chkColor.CheckState = Windows.Forms.CheckState.Checked Then
pMultiRend.ColorRend1 = m_pColorRend1
pMultiRend.ColorRend2 = m_pColorRend2
pMultiRend.ColorCombinationMethod = m_eColorCombinationMethod
Else
pMultiRend.ColorRend1 = Nothing
pMultiRend.ColorRend2 = Nothing
pMultiRend.ColorCombinationMethod = EColorCombinationType.enuCIELabMatrix ' default (?)
End If
If chkSize.CheckState = Windows.Forms.CheckState.Checked Then
pMultiRend.SizeRend = m_pSizeRend
Else
pMultiRend.SizeRend = Nothing
End If
Dim pRotRend As IRotationRenderer
Dim pFormRotRend As IRotationRenderer
pRotRend = pMultiRend
If chkRotation.CheckState = Windows.Forms.CheckState.Checked Then
pFormRotRend = m_pRend
pRotRend.RotationField = pFormRotRend.RotationField
pRotRend.RotationType = pFormRotRend.RotationType
Else
pRotRend.RotationField = ""
pRotRend.RotationType = esriSymbolRotationType.esriRotateSymbolArithmetic ' default (?)
End If
'Dim pTransRend As ITransparencyRenderer
'Dim pFormTransRend As ITransparencyRenderer
'pTransRend = pMultiRend
'If chkTransparency.CheckState = Windows.Forms.CheckState.Checked Then
' pFormTransRend = m_pRend
' pTransRend.TransparencyField = pFormTransRend.TransparencyField
'Else
' pTransRend.TransparencyField = ""
'End If
End Sub
Private Sub PropPageForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
' intialize form controls from data members
Dim pGeoLayers As IEnumLayer
Dim pUID As New UID
pUID.Value = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}"
pGeoLayers = m_pMap.Layers(pUID, True)
pGeoLayers.Reset()
Dim pGeoLayer As IGeoFeatureLayer
Dim pFeatRend As IFeatureRenderer
Dim iColor As Integer = 0
Dim iShapePattern As Integer = 0
Dim iSize As Integer = 0
pGeoLayer = pGeoLayers.Next
Dim sColor1 As String = ""
Dim sColor2 As String = ""
Dim sShapePattern As String = ""
Dim sSize As String = ""
Do While Not pGeoLayer Is Nothing
' to keep things simple, filter for layers with same feat class geometry (point, line, poly) as current layer
If (pGeoLayer.FeatureClass.ShapeType) = (m_pCurrentLayer.FeatureClass.ShapeType) Then
' filter out the current layer
If (Not pGeoLayer Is m_pCurrentLayer) Then
pFeatRend = pGeoLayer.Renderer
' filter for only layers currently assigned a renderer that is valid for each renderer type (shape, color, size)
If RendererIsValidForType(pFeatRend, eRendererType.eColor) Then
iColor = iColor + 1
ReDim Preserve m_pColorRendList(iColor)
m_pColorRendList(iColor - 1) = pFeatRend
cboHue.Items.Add(pGeoLayer.Name)
cboSatValue.Items.Add(pGeoLayer.Name)
cboPrimaryColor.Items.Add(pGeoLayer.Name)
cboSecondaryColor.Items.Add(pGeoLayer.Name)
If CompareRenderers(pGeoLayer.Renderer, m_pColorRend1) Then sColor1 = pGeoLayer.Name
If CompareRenderers(pGeoLayer.Renderer, m_pColorRend2) Then sColor2 = pGeoLayer.Name
End If
If RendererIsValidForType(pFeatRend, eRendererType.eShapePattern) Then
iShapePattern = iShapePattern + 1
ReDim Preserve m_pShapePatternRendList(iShapePattern)
m_pShapePatternRendList(iShapePattern - 1) = pFeatRend
cboShapePattern.Items.Add(pGeoLayer.Name)
'If pGeoLayer.Renderer Is m_pShapePatternRend Then sShapePattern = pGeoLayer.Name
If CompareRenderers(pGeoLayer.Renderer, m_pShapePatternRend) Then sShapePattern = pGeoLayer.Name
End If
If RendererIsValidForType(pFeatRend, eRendererType.eSize) Then
iSize = iSize + 1
ReDim Preserve m_pSizeRendList(iSize)
m_pSizeRendList(iSize - 1) = pFeatRend
cboSize1.Items.Add(pGeoLayer.Name)
'If pGeoLayer.Renderer Is m_pSizeRend Then sSize = pGeoLayer.Name
If CompareRenderers(pGeoLayer.Renderer, m_pSizeRend) Then sSize = pGeoLayer.Name
End If
End If
End If
pGeoLayer = pGeoLayers.Next
Loop
' select correct items in combos
cboShapePattern().Text = sShapePattern
If radComponents.Checked Then
cboHue.Text() = sColor1
cboSatValue.Text() = sColor2
Else
cboPrimaryColor.Text() = sColor1
cboSecondaryColor.Text() = sColor2
End If
'TESTING:
cboSize1.Text() = sSize
'TESTING:
cboShapePattern.Text() = sShapePattern
' disable if there aren't any layers in the map of the correct type
If iShapePattern <= 0 Then cboShapePattern.Enabled = False
If iColor <= 0 Then
If radComponents.Checked Then
cboHue.Enabled = False
cboSatValue.Enabled = False
Else
cboPrimaryColor.Enabled = False
cboSecondaryColor.Enabled = False
End If
End If
If iSize <= 0 Then cboSize1.Enabled = False
End Sub
Private Sub cboShapePattern_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboShapePattern.SelectedIndexChanged
m_pShapePatternRend = m_pShapePatternRendList(cboShapePattern.SelectedIndex)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub cboHue_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHue.SelectedIndexChanged
m_pColorRend1 = m_pColorRendList(cboHue.SelectedIndex)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub cboSatValue_selectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSatValue.SelectedIndexChanged
m_pColorRend2 = m_pColorRendList(cboSatValue.SelectedIndex)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub cboPrimaryColor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboPrimaryColor.SelectedIndexChanged
m_pColorRend1 = m_pColorRendList(cboPrimaryColor.SelectedIndex)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub cboSecondaryColor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSecondaryColor.SelectedIndexChanged
m_pColorRend2 = m_pColorRendList(cboSecondaryColor.SelectedIndex)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub cboSize1_selectedindexchanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSize1.SelectedIndexChanged
m_pSizeRend = m_pSizeRendList(cboSize1.SelectedIndex)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub radComponents_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radComponents.CheckedChanged
UpdateColorComb()
End Sub
Private Sub radCombination_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radCombination.CheckedChanged
UpdateColorComb()
End Sub
Private Sub UpdateColorComb()
If radComponents.Checked Then
m_eColorCombinationMethod = EColorCombinationType.enuComponents
cboHue.Enabled = True
cboSatValue.Enabled = True
cboPrimaryColor.Enabled = False
cboSecondaryColor.Enabled = False
Else
m_eColorCombinationMethod = EColorCombinationType.enuCIELabMatrix
cboHue.Enabled = False
cboSatValue.Enabled = False
cboPrimaryColor.Enabled = True
cboSecondaryColor.Enabled = True
End If
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Function RendererIsValidForType(ByVal pFeatRend As IFeatureRenderer, ByVal eMultiRendType As eRendererType) As Boolean
' indicates whether or not pFeatRend is valid for the eMultiRendType for the current layer
' e.g. if pFeatRend is an IProportionalSymbolRenderer, then it's valid for eMultiRendType = eSize
Dim pLegendInfo As ILegendInfo
If eMultiRendType = eRendererType.eShapePattern Then
Return TypeOf pFeatRend Is IUniqueValueRenderer
ElseIf eMultiRendType = eRendererType.eColor Then
pLegendInfo = pFeatRend
Return (TypeOf pFeatRend Is IUniqueValueRenderer) Or (TypeOf pFeatRend Is IClassBreaksRenderer And Not pLegendInfo.SymbolsAreGraduated)
Else ' size
pLegendInfo = pFeatRend
Return (TypeOf pFeatRend Is IClassBreaksRenderer And pLegendInfo.SymbolsAreGraduated) Or (TypeOf pFeatRend Is IProportionalSymbolRenderer)
End If
End Function
Private Sub butRotation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butRotation.Click
Dim pRendUIDlg2 As IRendererUIDialog2
pRendUIDlg2 = New MarkerRotationDialog
pRendUIDlg2.FeatureLayer = m_pCurrentLayer
pRendUIDlg2.Renderer = m_pRend
Dim pMyForm As SecondaryForm
pMyForm = New SecondaryForm
pRendUIDlg2.DoModal(pMyForm.Handle.ToInt32)
End Sub
Private Sub chkShapePattern_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkShapePattern.CheckedChanged
cboShapePattern.Enabled = (chkShapePattern.CheckState = Windows.Forms.CheckState.Checked)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub chkColor_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkColor.CheckedChanged
'combination is disabled
'radComponents.Enabled = (chkColor.CheckState = Windows.Forms.CheckState.Checked)
'radCombination.Enabled = (chkColor.CheckState = Windows.Forms.CheckState.Checked)
radComponents.Enabled = (chkColor.CheckState = Windows.Forms.CheckState.Checked)
radCombination.Enabled = False
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub chkSize_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkSize.CheckedChanged
cboSize1.Enabled = (chkSize.CheckState = Windows.Forms.CheckState.Checked)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
Private Sub chkRotation_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkRotation.CheckedChanged
butRotation.Enabled = (chkRotation.CheckState = Windows.Forms.CheckState.Checked)
If Not m_pSite Is Nothing Then m_pSite.PageChanged()
m_PageIsDirty = True
End Sub
'Private Sub chkTransparency_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
' butTransparency.Enabled = (chkTransparency.CheckState = Windows.Forms.CheckState.Checked)
' If Not m_pSite Is Nothing Then m_pSite.PageChanged()
' m_PageIsDirty = True
'End Sub
Private Sub radComponents_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles radComponents.EnabledChanged
cboHue.Enabled = radComponents.Enabled And radComponents.Checked
cboSatValue.Enabled = radComponents.Enabled And radComponents.Checked
End Sub
Private Sub radCombination_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles radCombination.EnabledChanged
'disabled
'cboPrimaryColor.Enabled = radCombination.Enabled And radCombination.Checked
'cboSecondaryColor.Enabled = radCombination.Enabled And radCombination.Checked
cboPrimaryColor.Enabled = False
cboSecondaryColor.Enabled = False
End Sub
Private Sub cboHue_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboHue.EnabledChanged
lblHue.Enabled = cboHue.Enabled
End Sub
Private Sub cboSatValue_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboSatValue.EnabledChanged
lblSatValue.Enabled = cboSatValue.Enabled
End Sub
Private Sub cboPrimaryColor_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboPrimaryColor.EnabledChanged
lblPrimaryColor.Enabled = cboPrimaryColor.Enabled
End Sub
Private Sub cboSecondaryColor_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboSecondaryColor.EnabledChanged
lblSecondaryColor.Enabled = cboSecondaryColor.Enabled
End Sub
Private Function CompareRenderers(ByVal pRend As IFeatureRenderer, ByVal pCheckRend As IFeatureRenderer) As Boolean
If TypeOf pRend Is IClassBreaksRenderer Then
' type
If Not TypeOf pCheckRend Is IClassBreaksRenderer Then Return False
Dim pCBRend As IClassBreaksRenderer
pCBRend = pRend
Dim pCBCheckRend As IClassBreaksRenderer
pCBCheckRend = pCheckRend
' break count
If pCBRend.BreakCount <> pCBCheckRend.BreakCount Then Return False
' field
If pCBRend.Field <> pCBCheckRend.Field Then Return False
End If
Return True
End Function
End Class