📄 form1.cs
字号:
IHsvColor pToColor = new HsvColorClass();
pToColor.Hue = 0 ;
pToColor.Saturation = 100;
pToColor.Value = 96;
bool ok ;
IAlgorithmicColorRamp pRamp = new AlgorithmicColorRampClass() ;
pRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm ;
pRamp.FromColor = pFromColor;
pRamp.ToColor = pToColor;
pRamp.Size = ClassesCount;
pRamp.CreateRamp(out ok);
IEnumColors pEnumColors = pRamp.Colors;
IColor pColor;
ISimpleFillSymbol pFillSymbol ;
for(int breakIndex = 0; breakIndex < ClassesCount; breakIndex++)
{
pColor = pEnumColors.Next();
pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = pColor;
pFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid ;
pClassBreaksRenderer.set_Symbol(breakIndex,(ISymbol) pFillSymbol);
pClassBreaksRenderer.set_Break(breakIndex,Classes[breakIndex]);
}
IGeoFeatureLayer m_pGeoFeatureLayer =(IGeoFeatureLayer) axMap1.get_Layer(2) ;
m_pGeoFeatureLayer.Renderer =(IFeatureRenderer) pClassBreaksRenderer;
axMap1.ActiveView.Refresh();
axTOC1.SetBuddyControl(axMap1.Object ) ;
axTOC1.Refresh();
}
private void m_Theme_UniqueValue_Click(object sender, System.EventArgs e)
{
ITable pTable ;
int fieldNumber ;
string strFieldName = "STATE_NAME";
pTable = (ITable) axMap1.get_Layer(2) ;
fieldNumber = pTable.FindField(strFieldName);
if (fieldNumber == -1)
{
MessageBox.Show( "Can't find field called STATE_NAME");
return ;
}
IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass();
pUniqueValueRenderer.FieldCount = 1;
pUniqueValueRenderer.set_Field(0,strFieldName);
object codeValue ;
bool ok;
IRandomColorRamp pColorRamp = new RandomColorRampClass();
pColorRamp.StartHue = 0;
pColorRamp.MinValue = 99;
pColorRamp.MinSaturation = 15;
pColorRamp.EndHue = 360;
pColorRamp.MaxValue = 100;
pColorRamp.MaxSaturation = 30;
pColorRamp.Size = 100;
pColorRamp.CreateRamp(out ok);
IEnumColors pEnumRamp = pColorRamp.Colors;
IQueryFilter pQueryFilter = new QueryFilterClass();
pQueryFilter.AddField(strFieldName);
ICursor pCursor = pTable.Search(pQueryFilter, true);
IRow pNextRow = pCursor.NextRow();
IFillSymbol pSym ;
IColor pNextUniqueColor ;
if (pNextRow != null)
{
int fieldIndex = pNextRow.Fields.FindField(strFieldName);
do
{
codeValue = pNextRow.get_Value(fieldIndex);
pNextUniqueColor = pEnumRamp.Next();
if (pNextUniqueColor ==null)
{
pEnumRamp.Reset();
pNextUniqueColor = pEnumRamp.Next();
}
pSym = new SimpleFillSymbolClass();
pSym.Color = pNextUniqueColor;
pUniqueValueRenderer.AddValue(codeValue.ToString() , "STATE_NAME" ,(ISymbol) pSym);
pNextRow = pCursor.NextRow();
} while (pNextRow != null);
}
IGeoFeatureLayer m_pGeoFeatureLayer =(IGeoFeatureLayer) axMap1.get_Layer(2);
m_pGeoFeatureLayer.Renderer =(IFeatureRenderer) pUniqueValueRenderer;
axMap1.ActiveView.Refresh();
axTOC1.SetBuddyControl(axMap1.Object ) ;
axTOC1.Refresh();
}
private void m_Theme_DotDensity_Click(object sender, System.EventArgs e)
{
IDotDensityRenderer pDotDensityRenderer = new DotDensityRendererClass();
IRendererFields pRendererFields =(IRendererFields) pDotDensityRenderer;
pRendererFields.AddField( "POP1990","1990年人口");
IDotDensityFillSymbol pDotDensityFillSymbol = new DotDensityFillSymbolClass();
pDotDensityFillSymbol.DotSize = 1;
pDotDensityFillSymbol.Color = GetRGBColor(0, 0, 0);
pDotDensityFillSymbol.BackgroundColor = GetRGBColor(239, 228, 190); // color of tan
ISymbolArray pSymbolArray =(ISymbolArray) pDotDensityFillSymbol;
ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbolClass();
pMarkerSymbol.Style =esriSimpleMarkerStyle.esriSMSCircle ;
pMarkerSymbol.Size = 3;
pMarkerSymbol.Color = GetRGBColor(0, 0, 0); // Black
pSymbolArray.AddSymbol((ISymbol) pMarkerSymbol);
pDotDensityRenderer.DotDensitySymbol = pDotDensityFillSymbol;
pDotDensityRenderer.DotValue = 200000;
IGeoFeatureLayer m_pGeoFeatureLayer =(IGeoFeatureLayer) axMap1.get_Layer(2);
m_pGeoFeatureLayer.Renderer =(IFeatureRenderer) pDotDensityRenderer;
axMap1.ActiveView.Refresh();
axTOC1.SetBuddyControl(axMap1.Object ) ;
axTOC1.Refresh();
}
private IRgbColor GetRGBColor(int pRed, int pGreen, int pBlue)
{
IRgbColor pRGB ;
pRGB = new RgbColorClass();
pRGB.Red = pRed;
pRGB.Green = pGreen;
pRGB.Blue = pBlue;
pRGB.UseWindowsDithering = true;
return pRGB;
}
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
switch(toolBar1.Buttons.IndexOf( e.Button))
{
case 0: //print
m_File_Print_Click(this, null);
break;
case 1: //exit
m_File_Exit_Click(this, null);
break;
case 3: //select
m_View_Select_Click(this, null);
RefreshToolButtons(3);
break;
case 4: //ZoomIn
m_View_ZoomIn_Click(this, null);
RefreshToolButtons(4);
break;
case 5: //ZoomOut
m_View_ZoomOut_Click(this, null);
RefreshToolButtons(5);
break;
case 6: //Pan
m_View_Pan_Click(this, null);
RefreshToolButtons(6);
break;
case 7: //FullExtent
m_View_EntireView_Click(this, null);
break;
case 9: //Length
m_Tool_Length_Click(this, null);
RefreshToolButtons(9);
break;
case 10: //Area
m_Tool_Area_Click(this, null);
RefreshToolButtons(10);
break;
case 11: //Angle
m_Tool_Angle_Click(this, null);
RefreshToolButtons(11);
break;
case 12: //Refresh
m_Tool_Refresh_Click(this, null);
break;
case 14: //newPoint
m_Edit_New_Point_Click(this, null);
RefreshToolButtons(14);
break;
case 15: //newLine
m_Edit_New_Line_Click(this, null);
RefreshToolButtons(15);
break;
case 16: //NewPolygon
m_Edit_New_Area_Click(this, null);
RefreshToolButtons(16);
break;
}
}
private void RefreshToolButtons(int index)
{
for(int i = 0; i< toolBar1.Buttons.Count; i++)
{
if (toolBar1.Buttons.IndexOf ( toolBar1.Buttons[i]) != index)
{
toolBar1.Buttons[i].Pushed = false;
}
}
}
private void m_Edit_New_Point_Click(object sender, System.EventArgs e)
{
iMapAction = 8;
statusBarPanel1.Text ="新建点";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(0);
pEditor.StartEditing();
}
private void m_Edit_New_Line_Click(object sender, System.EventArgs e)
{
iMapAction = 8;
statusBarPanel1.Text ="新建线";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(1);
pEditor.StartEditing();
}
private void m_Edit_New_Area_Click(object sender, System.EventArgs e)
{
iMapAction = 8;
statusBarPanel1.Text ="新建面";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(2);
pEditor.StartEditing();
}
private void m_Delete_Point_Click(object sender, System.EventArgs e)
{
iMapAction = 9;
statusBarPanel1.Text ="删除点";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(0);
pEditor.StartEditing();
}
private void m_Delete_Line_Click(object sender, System.EventArgs e)
{
iMapAction = 9;
statusBarPanel1.Text ="删除线";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(1);
pEditor.StartEditing();
}
private void m_Delete_Area_Click(object sender, System.EventArgs e)
{
iMapAction = 9;
statusBarPanel1.Text ="删除面";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(2);
pEditor.StartEditing();
}
private void m_Edit_Move_Point_Click(object sender, System.EventArgs e)
{
iMapAction = 10;
statusBarPanel1.Text ="移动点";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(0);
pEditor.StartEditing();
}
private void m_Edit_Move_Line_Click(object sender, System.EventArgs e)
{
iMapAction = 10;
statusBarPanel1.Text ="移动线";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(1);
pEditor.StartEditing();
}
private void m_Edit_Move_Area_Click(object sender, System.EventArgs e)
{
iMapAction = 10;
statusBarPanel1.Text ="移动面";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(2);
pEditor.StartEditing();
}
private void m_Edit_Vertex_Line_Click(object sender, System.EventArgs e)
{
iMapAction = 12;
statusBarPanel1.Text ="编辑线";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (pEditor.InEdit()) pEditor.StopEditing();
pEditor.CurrentLayer = axMap1.get_Layer(1);
pEditor.StartEditing();
}
private void m_Edit_Vertex_Area_Click(object sender, System.EventArgs e)
{
iMapAction = 12;
statusBarPanel1.Text ="编辑面";
ITool obj = new ControlsMapPanToolClass() ;
axMap1.CurrentTool = obj;
RefreshToolButtons(100);
if (
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -