/// <summary> /// 单击更多符号按钮的上下文菜单后,将新符号加入到符号选择控件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void contextMenuStripMoreSymbol_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { var toolStripMenuItem = (ToolStripMenuItem)e.ClickedItem; if (toolStripMenuItem.Name == StrAddMoreSymbol)//如果单击的是“添加更多符号” { var openfileDialog = new OpenFileDialog(); if (openfileDialog.ShowDialog() == DialogResult.OK) //弹出打开文件对话框 { SymbologyControl.LoadStyleFile(openfileDialog.FileName); } } else//如果是其它选项 { if (toolStripMenuItem.Checked == false) { SymbologyControl.LoadStyleFile(toolStripMenuItem.Name); } else { SymbologyControl.RemoveFile(toolStripMenuItem.Name); } } SymbologyControl.Refresh(); }
/// <summary> /// 根据图层的几何类型,加载符号并确定显示哪些控件 /// </summary> private void LoadStyle() { SymbologyControl.LoadStyleFile(GetStylesFilePath()); //加载ESRI.ServerStyle文件到SymbologyControl var eType = GetSymbologyStyleClassType(((IFeatureLayer)Layer).FeatureClass.ShapeType); //根据图层的几何类型,获取需要加载的符号类别 SetFeatureClassStyle(eType); //设置好SymbologyControl的StyleClass SetControlsVisible(eType); //设置好各控件的可见性(visible) }
/// <summary> /// 根据符号样式类别初始化SymbologyControl,如果图层已有符号,则把符号作为SymbologyControl的第一个符号并选中 /// </summary> /// <param name="eSymbologyStyleClass">符号样式类别枚举(点/线/面/标注/文本/指北针/比例尺等样式类别)</param> private void SetFeatureClassStyle(esriSymbologyStyleClass eSymbologyStyleClass) { SymbologyControl.StyleClass = eSymbologyStyleClass;//获取指定类别的符号样式库,即当前是点/线/面/标注/文本/指北针/比例尺等符号库的哪一个符号库 var symbologyStyleClass = SymbologyControl.GetStyleClass(eSymbologyStyleClass); if (LegendClass != null) { StyleGalleryItem = new ServerStyleGalleryItem { Name = "当前符号", Item = LegendClass.Symbol }; symbologyStyleClass.AddItem(StyleGalleryItem, 0); } symbologyStyleClass.SelectItem(0); }