/// <summary>
/// 同时闪烁多个实体
/// </summary>
/// <param name="activeView">当前地图视图</param>
/// <param name="geometries">实体数组</param>
public static void FlashGeometries(IActiveView activeView, IGeometry[] geometries) {
IScreenDisplay screenDisplay = activeView.ScreenDisplay;
IRgbColor pRGBColor = new RgbColorClass();
pRGBColor.Green = 128;
screenDisplay.StartDrawing(screenDisplay.hDC, (short)esriScreenCache.esriNoScreenCache);
foreach (IGeometry geometry in geometries) {
switch (geometry.GeometryType) {
case esriGeometryType.esriGeometryLine:
case esriGeometryType.esriGeometryPolyline:
if (_lineSymbol == null) {
_lineSymbol = new SimpleLineSymbolClass();
_lineSymbol.Width = 4;
_lineSymbol.Color = pRGBColor;
}
screenDisplay.SetSymbol(_lineSymbol as ISymbol);
screenDisplay.DrawPolyline(geometry);
break;
case esriGeometryType.esriGeometryPoint:
if (_markerSymbol == null) {
_markerSymbol = new SimpleMarkerSymbolClass();
_markerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
_markerSymbol.Color = pRGBColor;
}
screenDisplay.SetSymbol(_markerSymbol as ISymbol);
screenDisplay.DrawPoint(geometry);
break;
case esriGeometryType.esriGeometryPolygon:
if (_fillSymbol == null) {
_fillSymbol = new SimpleFillSymbolClass();
_fillSymbol.Outline = null;
_fillSymbol.Color = pRGBColor;
}
screenDisplay.SetSymbol(_fillSymbol as ISymbol);
screenDisplay.DrawPolygon(geometry);
break;
}
}
screenDisplay.FinishDrawing();
System.Threading.Thread.Sleep(500);
activeView.PartialRefresh(esriViewDrawPhase.esriViewForeground, null, null);
}