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;
}
调用如下:
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;
}
相关文章推荐
- AE要素闪烁的两种方法
- AE 将地图导出为图片的两种方法
- AE控制图层中要素可见状态的几种方法
- Textview文字闪烁效果(Runnable和Timer两种实现方法)
- js设置颜色闪烁的两种方法
- ICommand、ITool中调用要素闪烁/定位的方法
- AE + C# 生成环状面要素的方法
- AE控制图层中要素可见状态的几种方法
- 创建要素的两种方法(多要素)
- 利用CMemDC画图的两种方法(解决绘图闪烁)
- [转载]AE控制图层中要素可见状态的几种方法
- AE控制图层中要素可见状态的几种方法
- AE控制图层中要素可见状态的几种方法
- 在AE中取得选择要素的方法
- OC动态创建的问题变量数组.有数组,在阵列13要素,第一个数据包阵列,每3元素为一组,分成若干组,这些数据包的统一管理。最后,一个数组.(要动态地创建一个数组).两种方法
- 在AE中取得所有图层以及没某个图层选择要素的方法
- AE +C# 生成环状面要素的方法
- Rails中使用ajax的两种方法及调试技巧
- 【智能指针的延伸】两种定制删除器的实现方法
- 两种方法轻松恢复误ghost 硬盘