/// <summary> /// 面轮廓线宽度 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void upAreaBoardWidth_ValueChanged(object sender, EventArgs e) { IMultiLayerFillSymbol pMultiLayerFillSymbol = new MultiLayerFillSymbolClass(); ILineSymbol pLineSymbol = null; try { //pMultiLayerFillSymbol = (IMultiLayerFillSymbol)m_CurSymbol; //pLineSymbol = pMultiLayerFillSymbol.Outline; ChangeAreaSymboOutlinewWidth(m_CurSymbol, Convert.ToDouble(upAreaBoardWidth.Value)); PreviewSymbol(m_CurSymbol); if (m_SymbolXmlElement != null) { this.m_SymbolXmlElement.SetAttribute("轮廓线宽度", upAreaBoardWidth.Value.ToString()); } //Common.ModMain.g_Sys.MapControl.ActiveView.Refresh(); } catch (Exception ex) { //ModDeclare.g_ErrorHandler.DisplayInformation(ex.Message, false, null, null); MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); } finally { pMultiLayerFillSymbol = null; pLineSymbol = null; } }
//MultilayerFillSymbol private void button17_Click(object sender, EventArgs e) { IMultiLayerFillSymbol multiLayerFillSymbol = new MultiLayerFillSymbolClass(); IGradientFillSymbol gradientFillSymbol = new GradientFillSymbolClass(); IAlgorithmicColorRamp algorithcColorRamp = new AlgorithmicColorRampClass(); algorithcColorRamp.FromColor = getRGB(255, 0, 0); algorithcColorRamp.ToColor = getRGB(0, 255, 0); algorithcColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; gradientFillSymbol.ColorRamp = algorithcColorRamp; gradientFillSymbol.GradientAngle = 45; gradientFillSymbol.GradientPercentage = 0.9; gradientFillSymbol.Style = esriGradientFillStyle.esriGFSLinear; ICartographicLineSymbol cartoLine = new CartographicLineSymbol(); cartoLine.Cap = esriLineCapStyle.esriLCSButt; cartoLine.Join = esriLineJoinStyle.esriLJSMitre; cartoLine.Color = getRGB(255, 0, 0); cartoLine.Width = 2; //Create the LineFillSymbo ILineFillSymbol lineFill = new LineFillSymbol(); lineFill.Angle = 45; lineFill.Separation = 10; lineFill.Offset = 5; lineFill.LineSymbol = cartoLine; multiLayerFillSymbol.AddLayer(gradientFillSymbol); multiLayerFillSymbol.AddLayer(lineFill); object Missing = Type.Missing; IPolygon polygon = new PolygonClass(); IPointCollection pointCollection = polygon as IPointCollection; IPoint point = new PointClass(); point.PutCoords(5, 5); pointCollection.AddPoint(point, ref Missing, ref Missing); point.PutCoords(5, 10); pointCollection.AddPoint(point, ref Missing, ref Missing); point.PutCoords(10, 10); pointCollection.AddPoint(point, ref Missing, ref Missing); point.PutCoords(10, 5); pointCollection.AddPoint(point, ref Missing, ref Missing); polygon.SimplifyPreserveFromTo(); IActiveView activeView = this.axMapControl1.ActiveView; activeView.ScreenDisplay.StartDrawing(activeView.ScreenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache); activeView.ScreenDisplay.SetSymbol(multiLayerFillSymbol as ISymbol); activeView.ScreenDisplay.DrawPolygon(polygon as IGeometry); activeView.ScreenDisplay.FinishDrawing(); }
private void frmSymbolProperty_Load(object sender, EventArgs e) { if (this.m_pStyleGalleryItem != null) { this.txtName.Text = this.m_pStyleGalleryItem.Name; this.txtCategory.Text = this.m_pStyleGalleryItem.Category; this.symbolItem1.Symbol = this.m_pStyleGalleryItem.Item; if (this.symbolItem1.Symbol is IMarkerSymbol) { this.m_SymbolType = enumSymbolType.enumSTPoint; } else if (this.symbolItem1.Symbol is ILineSymbol) { this.m_SymbolType = enumSymbolType.enumSTLine; } else if (this.symbolItem1.Symbol is IFillSymbol) { this.m_SymbolType = enumSymbolType.enumSTFill; } else if (this.symbolItem1.Symbol is ITextSymbol) { this.m_SymbolType = enumSymbolType.enumSTText; } else if (this.symbolItem1.Symbol is IColorRamp) { this.m_SymbolType = enumSymbolType.enumSTColorRamp; } else if (this.symbolItem1.Symbol is IColor) { this.m_SymbolType = enumSymbolType.enumSTColor; } else if (this.symbolItem1.Symbol is ISymbolBorder) { this.m_SymbolType = enumSymbolType.enumSTBorder; } else if (this.symbolItem1.Symbol is ISymbolBackground) { this.m_SymbolType = enumSymbolType.enumSTBackground; } else if (this.symbolItem1.Symbol is ISymbolShadow) { this.m_SymbolType = enumSymbolType.enumSTShadow; } else if (this.symbolItem1.Symbol is IMarkerNorthArrow) { this.m_SymbolType = enumSymbolType.enumSTNorthArrow; } else if (this.symbolItem1.Symbol is IScaleBar) { this.m_SymbolType = enumSymbolType.enumSTScaleBar; } else if (this.symbolItem1.Symbol is IScaleText) { this.m_SymbolType = enumSymbolType.enumSTScaleText; } else if (this.symbolItem1.Symbol is ILegendItem) { this.m_SymbolType = enumSymbolType.enumSTLegendItem; } else { this.m_SymbolType = enumSymbolType.enumSTUnknown; } } else { this.m_pStyleGalleryItem = new ServerStyleGalleryItemClass(); object obj2 = null; switch (this.m_SymbolType) { case enumSymbolType.enumSTPoint: this.txtName.Text = "点符号"; obj2 = new MultiLayerMarkerSymbolClass(); ((IMultiLayerMarkerSymbol)obj2).AddLayer(new SimpleMarkerSymbolClass()); break; case enumSymbolType.enumSTLine: this.txtName.Text = "线符号"; obj2 = new MultiLayerLineSymbolClass(); ((IMultiLayerLineSymbol)obj2).AddLayer(new SimpleLineSymbolClass()); break; case enumSymbolType.enumSTFill: this.txtName.Text = "面符号"; obj2 = new MultiLayerFillSymbolClass(); ((IMultiLayerFillSymbol)obj2).AddLayer(new SimpleFillSymbolClass()); break; case enumSymbolType.enumSTText: case enumSymbolType.enumSTColorRamp: case enumSymbolType.enumSTColor: case enumSymbolType.enumSTLinePatch: case enumSymbolType.enumSTAreaPatch: return; case enumSymbolType.enumSTNorthArrow: this.txtName.Text = "指北针"; obj2 = new MarkerNorthArrowClass(); break; case enumSymbolType.enumSTScaleBar: this.txtName.Text = "比例尺"; obj2 = new ScaleLineClass(); break; case enumSymbolType.enumSTScaleText: this.txtName.Text = "比例尺文本"; obj2 = new ScaleTextClass(); break; case enumSymbolType.enumSTBorder: this.txtName.Text = "边界"; obj2 = new SymbolBorderClass(); break; case enumSymbolType.enumSTShadow: this.txtName.Text = "阴影"; obj2 = new SymbolShadowClass(); break; case enumSymbolType.enumSTBackground: this.txtName.Text = "背景"; obj2 = new SymbolBackgroundClass(); break; case enumSymbolType.enumSTLegendItem: this.txtName.Text = "图例项"; obj2 = new HorizontalLegendItemClass(); break; case enumSymbolType.enumSTLabel: this.txtName.Text = "标注"; obj2 = new LabelStyleClass(); break; default: return; } this.symbolItem1.Symbol = obj2; this.m_pStyleGalleryItem.Name = this.txtName.Text; this.m_pStyleGalleryItem.Category = this.txtCategory.Text; this.m_pStyleGalleryItem.Item = obj2; } }