private void DotDensity(IFeatureLayer pFeatLyr, string sFieldName, int intRendererDensity) { IGeoFeatureLayer pGeoFeatureLayer = pFeatLyr as IGeoFeatureLayer; IDotDensityRenderer pDotDensityRenderer = new DotDensityRendererClass(); IRendererFields pRendererFields = pDotDensityRenderer as IRendererFields; //设置渲染字段 pRendererFields.AddField(sFieldName); //设置填充背景色 IDotDensityFillSymbol pDotDensityFillSymbol = new DotDensityFillSymbolClass(); pDotDensityFillSymbol.DotSize = 3; pDotDensityFillSymbol.BackgroundColor = GetRgbColor(0, 255, 0); //设置渲染符号 ISymbolArray pSymbolArray = pDotDensityFillSymbol as ISymbolArray; ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass(); pSimpleMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle; pSimpleMarkerSymbol.Color = GetRgbColor(0, 0, 255); pSymbolArray.AddSymbol(pSimpleMarkerSymbol as ISymbol); pDotDensityRenderer.DotDensitySymbol = pDotDensityFillSymbol; //设置渲染密度,即每个点符号所代表的数值大小 pDotDensityRenderer.DotValue = intRendererDensity; //创建图例 pDotDensityRenderer.CreateLegend(); pGeoFeatureLayer.Renderer = pDotDensityRenderer as IFeatureRenderer; axMapControl1.Refresh(); axMapControl1.Update(); Close(); }
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) { rasterRen.Raster = m_rasterLayer.Raster; rasterRen.Update(); rasterRGBRen.RedBandIndex = comboBox2.SelectedIndex; rasterRGBRen.GreenBandIndex = comboBox3.SelectedIndex; rasterRGBRen.BlueBandIndex = comboBox4.SelectedIndex; rasterRen.Update(); m_rasterLayer.Renderer = (IRasterRenderer)rasterRGBRen; m_mapControl.Extent = m_rasterLayer.AreaOfInterest; m_mapControl.ActiveView.Refresh(); m_mapControl.Refresh(); m_mapControl.Update(); }
//闪烁目标 public static void FlashFeature(AxMapControl mapControl, IFeature iFeature, IMap iMap) { IActiveView iActiveView = iMap as IActiveView; //mapControl.SuspendLayout(); //update很重要。先让前面的缩放操作更新好了,再闪烁。 mapControl.Update(); if (iActiveView != null) { iActiveView.ScreenDisplay.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache); //根据几何类型调用不同的过程 switch (iFeature.Shape.GeometryType) { case esriGeometryType.esriGeometryPolyline: FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); break; case esriGeometryType.esriGeometryPolygon: FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); break; case esriGeometryType.esriGeometryPoint: FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape); break; default: break; } iActiveView.ScreenDisplay.FinishDrawing(); } }
public static void SaveMxd() { IMapDocument oMapDoc = new MapDocumentClass(); oMapDoc.Open(AxMapControl.DocumentFilename); if (oMapDoc.IsReadOnly[AxMapControl.DocumentFilename]) { throw new InvalidOperationException("Can not save mxd. Is read only."); } AxMapControl.Update(); AxTocControl.Update(); oMapDoc.ReplaceContents((IMxdContents)AxMapControl.Map); oMapDoc.Save(true, true); oMapDoc.Close(); if (oMapDoc != null) { ComReleaser.ReleaseCOMObject(oMapDoc); oMapDoc = null; } if (AxMapControl.Map != null) { ComReleaser.ReleaseCOMObject(AxMapControl.Map); AxMapControl.Map = null; } GC.Collect(); GC.WaitForPendingFinalizers(); }
/// <summary> /// 初始化标牌 /// </summary> private void InitLable() { IPoint point = base.Geometry as IPoint; mapControl = BelongLayer.MapControl as AxMapControl; mapControl.Update(); mapControl.OnMouseDown += mapControl_OnMouseDown; int x = -1; int y = -1; mapControl.FromMapPoint(point, ref x, ref y); System.Drawing.Point targetPoint = new System.Drawing.Point(x, y); mapLabel = new Windows.MapLabel(targetPoint); mapLabel.Move += new EventHandler(mapLabel_Move); mapLabel.Location = mapLabel.LabelLocation; IPoint labelLocation = mapControl.ToMapPoint(mapLabel.Location.X, mapLabel.Location.Y); Dosomething((Action)(delegate { mapControl.Controls.Add(mapLabel); }), true); //画线 MapFrame.Core.Model.Kml kml = new MapFrame.Core.Model.Kml(); kml.Placemark.Name = "标牌线"; MapFrame.Core.Model.KmlLineString line = new MapFrame.Core.Model.KmlLineString(); List <MapFrame.Core.Model.MapLngLat> pointList = new List <MapFrame.Core.Model.MapLngLat>(); pointList.Add(new MapFrame.Core.Model.MapLngLat(point.X, point.Y)); pointList.Add(new MapFrame.Core.Model.MapLngLat(labelLocation.X, labelLocation.Y)); line.PositionList = pointList; line.Color = Color.Black; line.Width = 2; kml.Placemark.Graph = line; BelongLayer.AddElement(kml); }
private void btnuse_Click(object sender, EventArgs e) { if (m_pLayer is IFeatureLayer) { try { m_strSQL = RtbSQL.Text; m_pMapCtl.Map.ClearSelection(); IFeatureSelection pFS = (IFeatureSelection)m_pLayer; IQueryFilter pFilter = new QueryFilterClass(); pFilter.WhereClause = m_strSQL; pFS.SelectFeatures(pFilter, esriSelectionResultEnum.esriSelectionResultNew, false); pFS.SelectionChanged(); m_pMapCtl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, m_pLayer, null); m_pMapCtl.Update(); } catch (System.Exception ex) { MessageBox.Show(ex.ToString()); } } }
/// <summary> /// 刷新地图 /// </summary> public void RefreshMap() { MainMapControl.Refresh(); MainMapControl.Update(); }
private void bt_ok_Click(object sender, EventArgs e) { splashScreenManager1.ShowWaitForm(); if (comboBoxSelect.SelectedItem == null) { MessageBox.Show("图层不能为空"); return; } if (comboBoxRed.SelectedItem == null || comboBoxGreen.SelectedItem == null || comboBoxBlue.SelectedItem == null) { MessageBox.Show("波段不能为空!"); return; } if (textBoxOutPut.Text == "") { MessageBox.Show("存储路径不能为空!"); return; } IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(m_pRasterDataset); IRasterRGBRenderer pRasterRGBRen = new RasterRGBRendererClass(); IRasterRenderer pRasterRen = (IRasterRenderer)pRasterRGBRen; pRasterRen.Raster = pRasterLayer.Raster; pRasterRGBRen.RedBandIndex = comboBoxRed.SelectedIndex; pRasterRGBRen.GreenBandIndex = comboBoxGreen.SelectedIndex; pRasterRGBRen.BlueBandIndex = comboBoxBlue.SelectedIndex; pRasterRen.Update(); pRasterLayer.Renderer = (IRasterRenderer)pRasterRGBRen; IRaster pRaster = pRasterLayer.Raster; if (pRaster != null) { IWorkspaceFactory WF = new RasterWorkspaceFactoryClass(); string filename = textBoxOutPut.Text; string filepath = System.IO.Path.GetDirectoryName(filename); string name = System.IO.Path.GetFileName(filename); try { IWorkspace rasterWorkspace = WF.OpenFromFile(filepath, 0); ISaveAs saveAs = (ISaveAs)pRaster; saveAs.SaveAs(name, rasterWorkspace, ""); if (MessageBox.Show("保存成功,是否打开图层?") == DialogResult.OK) { pRasterLayer.Name = name; m_mapControl.AddLayer(pRasterLayer); m_mapControl.Extent = pRasterLayer.AreaOfInterest; m_mapControl.ActiveView.Refresh(); m_mapControl.Refresh(); m_mapControl.Update(); } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } } splashScreenManager1.CloseWaitForm(); this.Close(); }