您的位置:首页 > 其它

AE中闪烁要素的方两种方法

2010-04-03 15:36 218 查看
1.利用IMapControl3::FlashShape 方法

调用如下:

ISymbol symbol = CreateSimpleSymbol(featuer.Shape.GeometryType);

this.m_mapControl.FlashShape(featuer.Shape, 3, 150, symbol);

2.使用IScreenDisplay接口的 DrawPoint DrawMultipoint DrawPolyline DrawPolygon等方法

/// <summary>

/// 闪烁指定要素IGeometry

/// </summary>

/// <param name="geometry">要素</param>

/// <param name="flashCount">闪烁次数</param>

/// <param name="interval">每次闪烁的时间</param>

private void FlashGeometry(IGeometry geometry, int flashCount, int interval)

{

IScreenDisplay display = m_activeView.ScreenDisplay;

ISymbol symbol = CommonClass.CreateSimpleSymbol(geometry.GeometryType);

display.StartDrawing(0, (short)esriScreenCache.esriNoScreenCache); display.SetSymbol(symbol);

for (int i = 0; i < flashCount; i++)

{

switch (geometry.GeometryType)

{

case esriGeometryType.esriGeometryPoint:

display.DrawPoint(geometry);

break;

case esriGeometryType.esriGeometryMultipoint:

display.DrawMultipoint(geometry);

break;

case esriGeometryType.esriGeometryPolyline:

display.DrawPolyline(geometry);

break;

case esriGeometryType.esriGeometryPolygon:

display.DrawPolygon(geometry);

break;

}

System.Threading.Thread.Sleep(interval);

}

display.FinishDrawing();

}

注:两个地方都用到了一个创建符号的方法

/// <summary>

/// 根据几何类型创建闪烁符号

/// </summary>

/// <param name="geometryType">要素几何类型</param>

/// <returns>ISymbol</returns>

private ISymbol CreateSimpleSymbol(esriGeometryType geometryType)

{

ISymbol symbol = null;

switch (geometryType)

{

case esriGeometryType.esriGeometryPoint:

case esriGeometryType.esriGeometryMultipoint:

ISimpleMarkerSymbol markerSymbol = new SimpleMarkerSymbolClass();

markerSymbol.Color = CommonClass.getRGB(255, 128, 128);

markerSymbol.Size = 2;

symbol = markerSymbol as ISymbol;

break;

case esriGeometryType.esriGeometryPolyline:

case esriGeometryType.esriGeometryPath:

ISimpleLineSymbol lineSymbol = new SimpleLineSymbolClass();

lineSymbol.Color = CommonClass.getRGB(255, 128, 128);

lineSymbol.Width = 4;

symbol = lineSymbol as ISymbol;

break;

case esriGeometryType.esriGeometryPolygon:

case esriGeometryType.esriGeometryRing:

ISimpleFillSymbol fillSymbol = new SimpleFillSymbolClass();

fillSymbol.Color = CommonClass.getRGB(255, 128, 128);

symbol = fillSymbol as ISymbol;

break;

}

symbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;

return symbol;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: