/// <summary> /// 设置要素图片填充 /// </summary> /// <param name="featureLayer"></param> /// <param name="pictureName"></param> public static void SetFeaturePictureFillSymbol(IFeatureLayer featureLayer, string pictureName) { IGeoFeatureLayer geoLayer = featureLayer as IGeoFeatureLayer; IPictureFillSymbol pFillSymbol = new PictureFillSymbolClass(); pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, pictureName); ISimpleRenderer simpleRender = geoLayer.Renderer as ISimpleRenderer; if (simpleRender == null) { simpleRender = new SimpleRendererClass(); } simpleRender.Symbol = pFillSymbol as ISymbol; geoLayer.Renderer = simpleRender as IFeatureRenderer; }
//PictureFillSymbol private void button16_Click(object sender, EventArgs e) { IPictureFillSymbol pictureFillSymbol = new PictureFillSymbolClass(); //创建图片符号 //string fileName = @"E:\vs2005\第五章\lesson2\lesson2\data\qq.bmp"; string path = Directory.GetCurrentDirectory(); string fileName = path + @"\qq.bmp"; pictureFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPictureBitmap, fileName); pictureFillSymbol.Color = getRGB(0, 255, 0); ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDotDot; simpleLineSymbol.Color = getRGB(255, 0, 0); ISymbol symbol = pictureFillSymbol as ISymbol; symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen; pictureFillSymbol.Outline = simpleLineSymbol; pictureFillSymbol.Angle = 45; 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(pictureFillSymbol as ISymbol); activeView.ScreenDisplay.DrawPolygon(polygon as IGeometry); activeView.ScreenDisplay.FinishDrawing(); }
/// <summary> /// 岩性图层单值渲染 /// </summary> /// <param name="R_pFeatureLayer"></param> /// <param name="sFieldName"></param> public static void UniqueValueRendererLithology(IFeatureLayer R_pFeatureLayer, string sFieldName) { IGeoFeatureLayer geoLayer = R_pFeatureLayer as IGeoFeatureLayer; ITable pTable = geoLayer.FeatureClass as ITable; ICursor pCursor; IQueryFilter pQueryFilter = new QueryFilter(); pQueryFilter.AddField(sFieldName); //以唯一值作为条件 pCursor = pTable.Search(pQueryFilter, true); IUniqueValueRenderer pUniqueValueR = new UniqueValueRendererClass(); pUniqueValueR.FieldCount = 1; //单值渲染 pUniqueValueR.set_Field(0, sFieldName); //渲染字段 IFeatureCursor pFeatureCursor = R_pFeatureLayer.Search(pQueryFilter, false); IFeature pFeature = pFeatureCursor.NextFeature(); int index = R_pFeatureLayer.FeatureClass.FindField(sFieldName); int i = 20; while (pFeature != null) { string value = pFeature.get_Value(index).ToString(); pFeature = pFeatureCursor.NextFeature(); IPictureFillSymbol pFillSymbol = new PictureFillSymbolClass(); pFillSymbol.Outline.Width = 1; if (value.Equals("上三叠统")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("上三叠统")); } else if (value.Equals("上古生界")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("上古生界")); } else if (value.Equals("上白垩统")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("上白垩统")); } else if (value.Equals("上震旦统")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("上震旦统")); } else if (value.Equals("下三叠统")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("下三叠统")); } else if (value.Equals("下白垩统")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("下白垩统")); } else if (value.Equals("下第三系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("下第三系")); } else if (value.Equals("下远古界")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("下远古界")); } else if (value.Equals("下震旦统")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("下震旦统")); } else if (value.Equals("中远古界")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("中远古界")); } else if (value.Equals("二叠系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("二叠系")); } else if (value.Equals("二叠系 三叠系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("二叠系 三叠系")); } else if (value.Equals("二叠系上统")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("二叠系上统")); } else if (value.Equals("侏罗纪")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("侏罗纪")); } else if (value.Equals("奥陶系 志留系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("奥陶系 志留系")); } else if (value.Equals("志留系 泥盆系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("志留系 泥盆系")); } else if (value.Equals("新近系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("新近系")); } else if (value.Equals("泥盆系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("泥盆系")); } else if (value.Equals("石炭系 二叠系")) { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("石炭系 二叠系")); } else { pFillSymbol.CreateFillSymbolFromFile(esriIPictureType.esriIPicturePNG, LithologyImageUtils.getImagePath("其他岩性")); //i后移一位,以便于对应name字段 i++; } pUniqueValueR.AddValue(value, "", pFillSymbol as ISymbol); } geoLayer.Renderer = pUniqueValueR as IFeatureRenderer; MainFrom.m_mapControl.Refresh(); }