ARCGIS动态画点

小马哥淡定 原文 ARCGIS动态画点

private void DrawPointOnMap(double x, double y,bool clear)
{
    IMapControl2 pMapCtrl = (IMapControl2)mapCtrl.Object;
    IGraphicsLayer pGraphicsLyr = mapCtrl.Map.BasicGraphicsLayer;
    IActiveView pView = mapCtrl.ActiveView;
    IGraphicsContainer pGraphicsContainer = (IGraphicsContainer)pGraphicsLyr;
    IPoint pnt = new PointClass();
    pnt.X = x;
    pnt.Y = y;

    IScreenDisplay pDisp = pView.ScreenDisplay;
    pDisp.StartDrawing(pDisp.hDC, (short)(ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache));
    pDisp.SetSymbol(new SimpleMarkerSymbolClass());

    //下面两句关键
    pGraphicsContainer.DeleteAllElements();
    pView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
    pDisp.DrawPoint(pnt);

    pDisp.FinishDrawing(); // When FinishDrawing is called, all the caches get flushed to the screen. FinishDrawing must be called before StartDrawing can be called again. 
    IMarkerElement pMkElmt = new MarkerElementClass();
    IElement pElmt = (IElement)pMkElmt;
    pMkElmt.Symbol = new SimpleMarkerSymbolClass();
    pElmt.Geometry = pnt;

    pGraphicsContainer.AddElement(pElmt, 0);
    IGeometry geo = pElmt.Geometry;
    //mapCtrl.FlashShape(geo, 5, 1000, null);

}
原文地址:https://www.cnblogs.com/arxive/p/6110196.html