/// <summary> /// 单击更多符号按钮,弹出上下文菜单列出其它符号菜单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnMoreSymbols_Click(object sender, EventArgs e) { if (this._contextMenuMoreSymbolInitiated == false) { CheckArcGIS10Install checkArcGisInstall = new CheckArcGIS10Install(); string sInstall = checkArcGisInstall.GetDesktopPath(); string path = sInstall + "\\Styles"; //取得菜单项数量 string[] styleNames = System.IO.Directory.GetFiles(path, "*.ServerStyle"); ToolStripMenuItem[] symbolContextMenuItem = new ToolStripMenuItem[styleNames.Length + 1]; //循环添加其它符号菜单项到菜单 for (int i = 0; i < styleNames.Length; i++) { symbolContextMenuItem[i] = new ToolStripMenuItem(); symbolContextMenuItem[i].CheckOnClick = true; symbolContextMenuItem[i].Text = System.IO.Path.GetFileNameWithoutExtension(styleNames[i]); if (symbolContextMenuItem[i].Text == "ESRI") { symbolContextMenuItem[i].Checked = true; } symbolContextMenuItem[i].Name = styleNames[i]; } //添加“更多符号”菜单项到菜单最后一项 symbolContextMenuItem[styleNames.Length] = new ToolStripMenuItem(); symbolContextMenuItem[styleNames.Length].Text = "添加符号"; symbolContextMenuItem[styleNames.Length].Name = "AddMoreSymbol"; //添加所有的菜单项到菜单 this.contextMenuStripMoreSymbol.Items.AddRange(symbolContextMenuItem); this._contextMenuMoreSymbolInitiated = true; } //显示菜单 this.contextMenuStripMoreSymbol.Show(this.btnMoreSymbols.Location); }
/// <summary> /// 根据图层的几何类型,加载符号并确定显示哪些控件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SymbolSelectorForm_Load(object sender, EventArgs e) { //取得ArcGIS安装路径,载入ESRI.ServerStyle文件到SymbologyControl CheckArcGIS10Install checkArcGisInstall = new CheckArcGIS10Install(); string sInstall = checkArcGisInstall.GetDesktopPath(); this.axSymbologyControl1.MousePointer = esriControlsMousePointer.esriPointerDefault; this.axSymbologyControl1.LoadStyleFile(sInstall + "\\Styles\\ESRI.ServerStyle"); //确定图层的类型(点线面),设置好SymbologyControl的StyleClass,设置好各控件的可见性(visible) IGeoFeatureLayer pGeoFeatureLayer = (IGeoFeatureLayer)_pLayer; switch (((IFeatureLayer)_pLayer).FeatureClass.ShapeType) { case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint: this.SetFeatureClassStyle(esriSymbologyStyleClass.esriStyleClassMarkerSymbols); this.lblAngle.Visible = true; this.nudAngle.Visible = true; this.lblSize.Visible = true; this.nudSize.Visible = true; this.lblWidth.Visible = false; this.nudWidth.Visible = false; this.lblOutlineColor.Visible = false; this.btnOutlineColor.Visible = false; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: this.SetFeatureClassStyle(esriSymbologyStyleClass.esriStyleClassLineSymbols); this.lblAngle.Visible = false; this.nudAngle.Visible = false; this.lblSize.Visible = false; this.nudSize.Visible = false; this.lblWidth.Visible = true; this.nudWidth.Visible = true; this.lblOutlineColor.Visible = false; this.btnOutlineColor.Visible = false; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon: this.SetFeatureClassStyle(esriSymbologyStyleClass.esriStyleClassFillSymbols); this.lblAngle.Visible = false; this.nudAngle.Visible = false; this.lblSize.Visible = false; this.nudSize.Visible = false; this.lblWidth.Visible = true; this.nudWidth.Visible = true; this.lblOutlineColor.Visible = true; this.btnOutlineColor.Visible = true; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultiPatch: this.SetFeatureClassStyle(esriSymbologyStyleClass.esriStyleClassFillSymbols); this.lblAngle.Visible = false; this.nudAngle.Visible = false; this.lblSize.Visible = false; this.nudSize.Visible = false; this.lblWidth.Visible = true; this.nudWidth.Visible = true; this.lblOutlineColor.Visible = true; this.btnOutlineColor.Visible = true; break; default: this.Close(); break; } }