📄 formselectfield.cs
字号:
pRandomColorRamp.Size = pRender.ValueCount;
bool flag;
pRandomColorRamp.CreateRamp(out flag);
IEnumColors pEnumColors = pRandomColorRamp.Colors;
pEnumColors.Reset();
for (long i = 0; i < pRender.ValueCount; i++)
{
string str = pRender.get_Value((int)i);
if (str != "")
{
ISimpleFillSymbol pSimpleFillSymbol = pRender.get_Symbol(str) as ISimpleFillSymbol;
pSimpleFillSymbol.Color = pEnumColors.Next();
pRender.set_Symbol(str, pSimpleFillSymbol as ISymbol);
}
}
//
pRender.ColorScheme = "Custom";
pRender.set_FieldType(0, true);
pGeoFeatureLayer.Renderer = pRender as IFeatureRenderer;
pGeoFeatureLayer.DisplayField = field;
/*IRendererPropertyPage pRendererPropertyPage = new UniqueValuePropertyPageClass();
pGeoFeatureLayer.RendererPropertyPageClassID = pRendererPropertyPage.ClassID;*/
}
//miduxuanran
private void dotValueRenderer()
{
string pField = fieldName;
//IGeoFeatureLayer pGeoFeatureL;
IDotDensityRenderer pDotDensityRenderer;
IDotDensityFillSymbol pDotDensityFills;
IRendererFields pRendererFields;
ISymbolArray pSymbolArray;
ISimpleMarkerSymbol pSimpleMarkerS;
// pGeoFeatureL = pPrimaryTable as IGeoFeatureLayer;//(IGeoFeatureLayer)pMap.get_Layer(layerIndex);
pDotDensityRenderer = new DotDensityRendererClass();
pRendererFields = (IRendererFields)pDotDensityRenderer;
pRendererFields.AddField(pField, pField);
pDotDensityFills = new DotDensityFillSymbolClass();
pDotDensityFills.DotSize = 3;
pDotDensityFills.Color = GetRGB(0, 0, 0);
pDotDensityFills.BackgroundColor = GetRGB(239, 228, 190);
pSymbolArray = (ISymbolArray)pDotDensityFills;
pSimpleMarkerS = new SimpleMarkerSymbolClass();
pSimpleMarkerS.Size = 10;
pSimpleMarkerS.Color = GetRGB(0, 0, 0);
pSymbolArray.AddSymbol((ISymbol)pSimpleMarkerS);
pDotDensityRenderer.DotDensitySymbol = pDotDensityFills;
pDotDensityRenderer.DotValue = dotValue;
pGeoFeatureL.Renderer = (IFeatureRenderer)pDotDensityRenderer;
}
//bilixuanran
private void proportionalRenderer()
{
//IFeatureLayer pFeatureLayer;
//IGeoFeatureLayer pGeoFeatureLayer;
IProportionalSymbolRenderer pProportionalSymbolR;
ITable pTable;
IQueryFilter pQueryFilter;
ICursor pCursor;
IFillSymbol pFillSymbol;
ICharacterMarkerSymbol pCharacterMarkerS;
IDataStatistics pDataStatics;
IStatisticsResults pStaticsResult;
IRotationRenderer pRotationRenderer;
string pField;
pField = fieldName;
//pFeatureLayer = (IFeatureLayer)pMap.get_Layer(layerIndex);
//pGeoFeatureLayer = (IGeoFeatureLayer)pMap.get_Layer(layerIndex);
pTable = (ITable)pPrimaryTable;//pFeatureLayer;
pQueryFilter = new QueryFilterClass();
pQueryFilter.AddField(pField);
pCursor = pTable.Search(pQueryFilter, true);
pDataStatics = new DataStatisticsClass();
pDataStatics.Cursor = pCursor;
pDataStatics.Field = pField;
pStaticsResult = pDataStatics.Statistics;
if (pStaticsResult == null)
{
MessageBox.Show("提示", "空", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
return;
}
pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = GetRGB(239, 228, 190);
pCharacterMarkerS = new CharacterMarkerSymbolClass();
pCharacterMarkerS.CharacterIndex = 92;
pCharacterMarkerS.Color = GetRGB(0, 0, 0);
pCharacterMarkerS.Size = 5;
pProportionalSymbolR = new ProportionalSymbolRendererClass();
pProportionalSymbolR.ValueUnit = esriUnits.esriUnknownUnits;
pProportionalSymbolR.Field = pField;
pProportionalSymbolR.FlanneryCompensation = false;
pProportionalSymbolR.MinDataValue = pStaticsResult.Minimum + 1;
pProportionalSymbolR.MaxDataValue = pStaticsResult.Maximum;
pProportionalSymbolR.BackgroundSymbol = pFillSymbol;
pProportionalSymbolR.MinSymbol = (ISymbol)pCharacterMarkerS;
pProportionalSymbolR.LegendSymbolCount = 5;
pProportionalSymbolR.CreateLegendSymbols();
pRotationRenderer = (IRotationRenderer)pProportionalSymbolR;
pRotationRenderer.RotationField = pField;
pRotationRenderer.RotationType = esriSymbolRotationType.esriRotateSymbolGeographic;
pGeoFeatureL.Renderer = (IFeatureRenderer)pProportionalSymbolR;
}
private IRgbColor GetRGB(int R, int G, int B)
{
IRgbColor pRGB;
pRGB = new RgbColorClass();
pRGB.Red = R;
pRGB.Green = G;
pRGB.Blue = B;
return pRGB;
}
//zhuzhuangxuanran
private void chartRenderer()
{
//IGeoFeatureLayer pGeoFeatureL;
IChartRenderer pChartRenderer;
IRendererFields pRendererFields;
ITable pTable;
ICursor pCursor;
IQueryFilter pQueryFilter;
IRowBuffer pRowBuffer;
int numFields = 2;
int[] fieldIndecies;
fieldIndecies = new int[numFields];
//Dim fieldIndecies(0 To numFields - 1) As Long
//long lFieldIndex;
double dMaxValue;
bool bFirstValue;
double dFieldValue;
IBarChartSymbol pBarChartSymbol;
IFillSymbol pFillSymbol;
IMarkerSymbol pMarkerSymbol;
ISymbolArray pSymbolArray;
IChartSymbol pChartSymol;
string strPopField1 = fieldName;
string strPopField2 = fieldName1;
pChartRenderer = new ChartRendererClass();
pRendererFields = (IRendererFields)pChartRenderer;
pRendererFields.AddField(strPopField1, strPopField1);
pRendererFields.AddField(strPopField2, strPopField2);
// pGeoFeatureL = (IGeoFeatureLayer)pMap.get_Layer(0);
pTable = (ITable)pGeoFeatureL;
pQueryFilter = new QueryFilterClass();
pQueryFilter.AddField(strPopField1);
pQueryFilter.AddField(strPopField2);
pCursor = pTable.Search(pQueryFilter, true);
fieldIndecies[0] = pTable.FindField(strPopField1);
fieldIndecies[1] = pTable.FindField(strPopField2);
bFirstValue = true;
dMaxValue = 0;
pRowBuffer = pCursor.NextRow();
while (pRowBuffer != null)
{
int i;
for (i = 0; i < numFields; i++)
{
if (pRowBuffer == null)
break;
dFieldValue = (double)pRowBuffer.get_Value(fieldIndecies[i]);
if (bFirstValue)
{
dMaxValue = dFieldValue;
bFirstValue = false;
}
else
{
if (dFieldValue > dMaxValue)
dMaxValue = dFieldValue;
}
pRowBuffer = pCursor.NextRow();
}
}
if (dMaxValue < 0)
{
MessageBox.Show("最大值计算有误,或者是最大值等于0");
return;
}
pBarChartSymbol = new BarChartSymbolClass();
pChartSymol = (IChartSymbol)pBarChartSymbol;
pBarChartSymbol.Width = 20;
pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol;
pChartSymol.MaxValue = dMaxValue;
pMarkerSymbol.Size = 30;
pSymbolArray = (ISymbolArray)pBarChartSymbol;
pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = GetRGB(213, 212, 252);
pSymbolArray.AddSymbol((ISymbol)pFillSymbol);
pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = GetRGB(193, 252, 179);
pSymbolArray.AddSymbol((ISymbol)pFillSymbol);
pChartRenderer.ChartSymbol = (IChartSymbol)pBarChartSymbol;
pChartRenderer.Label = "人口";
pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = GetRGB(239, 228, 190);
pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;
pChartRenderer.UseOverposter = false;
pGeoFeatureL.Renderer = (IFeatureRenderer)pChartRenderer;
}
//private void pieRenderer()
//{
// string pRenderField;
// Renderer pPie = new Renderer();
// pPie.pMap = axMapControl1.Map;
// pPie.ShowDialog();
// pRenderField = pPie.render;
// Num = pPie.Num;
// if (pRenderField == null || pRenderField == "") return;
// IFeatureLayer pFLayer = (IFeatureLayer)axMapControl1.get_Layer(Num);
// IGeoFeatureLayer pGeoFeaLayer = (IGeoFeatureLayer)pFLayer;
// IChartRenderer pChartRenderer = new ChartRendererClass();
// IRendererFields pRenderFields = (IRendererFields)pChartRenderer;
// pRenderFields.AddField(pRenderField, null);
// IPieChartRenderer pPieChartRender = (IPieChartRenderer)pChartRenderer;
// IQueryFilter pQueryFilter = new QueryFilterClass();
// ITable pTable = (ITable)pGeoFeaLayer;
// pQueryFilter.AddField(pRenderField);
// ICursor pCursor = pTable.Search(pQueryFilter, true);
// int fieldIndex;
// double MaxValue;
// bool firstValue;
// double fieldValue;
// fieldIndex = pTable.FindField(pRenderField);
// firstValue = true;
// MaxValue = 0;
// IRowBuffer pRow = pCursor.NextRow();
// while (pRow != null)
// {
// fieldValue = (double)pRow.get_Value(fieldIndex);
// if (firstValue)
// {
// MaxValue = fieldValue;
// firstValue = false;
// }
// if (fieldValue > MaxValue)
// {
// MaxValue = fieldValue;
// }
// pRow = pCursor.NextRow();
// }
// IPieChartSymbol pPiechartSymbol = new PieChartSymbolClass();
// IFillSymbol pFillSymbol = new SimpleFillSymbolClass();
// IChartSymbol pChartSymbol = (IChartSymbol)pPiechartSymbol;
// pPiechartSymbol.Clockwise = true;
// pPiechartSymbol.UseOutline = true;
// ILineSymbol pOutLine = new SimpleLineSymbolClass();
// pOutLine.Color = GetRGBColor(250, 0, 0);
// pOutLine.Width = 0.5;
// pPiechartSymbol.Outline = pOutLine;
// IMarkerSymbol pMarkerSymbol = (IMarkerSymbol)pPiechartSymbol;
// pChartSymbol.MaxValue = MaxValue;
// pMarkerSymbol.Size = 3;
// //像符号数组中添加 添加符号
// ISymbolArray pSymbolArray = (ISymbolArray)pPiechartSymbol;
// pFillSymbol.Color = GetRGBColor(218, 112, 214);
// pFillSymbol.Outline = pOutLine;
// pSymbolArray.AddSymbol((ISymbol)pFillSymbol);
// pFillSymbol.Color = GetRGBColor(183, 242, 122);
// pFillSymbol.Outline = pOutLine;
// pSymbolArray.AddSymbol((ISymbol)pFillSymbol);
// pFillSymbol.Color = GetRGBColor(252, 218, 213);
// pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;
// pChartRenderer.UseOverposter = false;
// pPieChartRender.MinSize = 30;
// pPieChartRender.MinValue = 21;
// pPieChartRender.FlanneryCompensation = false;
// pPieChartRender.ProportionalBySum = true;
// pChartRenderer.ChartSymbol = (IChartSymbol)pPiechartSymbol;
// pChartRenderer.CreateLegend();
// pGeoFeaLayer.Renderer = (IFeatureRenderer)pChartRenderer;
//}
private void comboBox3_SelectionChangeCommitted(object sender, EventArgs e)
{
listBox1.Items.Clear();
listBox1.Enabled = true;
fieldIndex1 = comboBox3.SelectedIndex;
fieldName1 = pTable.Fields.get_Field(fieldIndex).Name;
//给右侧的属性值列表框添加字段
IQueryFilter pQueryFilter;
pQueryFilter = new QueryFilterClass();
pQueryFilter.AddField(fieldName);
rowCount = pTable.RowCount(pQueryFilter);
fieldValue = new double[rowCount];
for (int i = 0; i < rowCount; i++)
{
listBox1.Items.Add(pTable.GetRow(i).get_Value(fieldIndex).ToString());
if (pTable.GetRow(i).get_Value(fieldIndex) is int || pTable.GetRow(i).get_Value(fieldIndex) is double)
fieldValue[i] = (double)pTable.GetRow(i).get_Value(fieldIndex);
}
}
private void button1_Click(object sender, EventArgs e)
{
//点密度渲染时
if (pFlag == "DotValue")
{
if (tbDotValue.Text == "")
MessageBox.Show("请填写“每个点代表数值”一栏", "提示");
else
{
dotValue = Double.Parse(tbDotValue.Text);
dotValueRenderer();
}
}
//分类渲染
else if (pFlag == "ClassBreak")
{
ClassBreak();
}
else if (pFlag == "Unique")
{
Unique();
}
else if (pFlag == "Proportional")
{
proportionalRenderer();
}
else if (pFlag == "Chart")
{
chartRenderer();
}
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -