在三维场景 中可以画出几何要素,其充当临时图层,在刷新后会消失。一般用作临时测试,或者有特别的用途。函数如下:
public static void Draw_Polyline(IGlobe pGlobe, int[] rgbColor,IGeometry geometry)
{
try
{
//首先要实现容器接口
IGraphicsLayer pGraphicsLayer = (pGlobe as IBasicMap).BasicGraphicsLayer;
IGraphicsContainer pGraphicsContainer = pGraphicsLayer as IGraphicsContainer;
//ILineElement用来获得symbol属性
ILineElement pLineElement = new LineElementClass();
//用ICartographicLineSymbol来设置线的属性
ICartographicLineSymbol pSymbol = new CartographicLineSymbolClass();
IRgbColor pRGBcolor = new RgbColorClass();
pRGBcolor.Red = rgbColor[0];
pRGBcolor.Green = rgbColor[1];
pRGBcolor.Blue = rgbColor[2];
pSymbol.Color = pRGBcolor;
pSymbol.Width = 5;
pLineElement.Symbol = pSymbol;
//IElement用来获得Geometry属性
IElement pElement = pLineElement as IElement;
//把ILine转换为IGeoMetry也能实现
//清空容器里面所有的元素
pGraphicsContainer.DeleteAllElements();
/*for (int i = 0; i < geometry.Count; i++) //添加多个几何要素
{
//pElement.Geometry = geometry;
pElement.Geometry = geometry[i];
//在容器里添加元素
pGraphicsContainer.AddElement(pElement, 0);
}*/
pElement.Geometry = geometry; //添加一个几何要素
pGraphicsContainer.AddElement(pElement, 0);
//pGraphicsContainer.DeleteAllElements();
//pElement.Geometry = geometry[0];
//pGraphicsContainer.AddElement(pElement, 0);
pElement.Activate(pGlobe.GlobeDisplay as IDisplay);
pGlobe.GlobeDisplay.RefreshViewers();
pGlobe.GlobeDisplay.RefreshViewers();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}