pLayer为需要调整绘制顺序的图层名称。
将该图层上移一层:(Operate_3D为真时,是三维视图下调整;为假时,是二维视图下调整)
int currentIndex = -1;
ILayer pTempLayer;
if (Operate_3D)
{
for (int i = 0; i < m_Scene.LayerCount; i++)
{
pTempLayer = m_Scene.get_Layer(i);
if (pTempLayer == pLayer)
{
currentIndex = i;
}
}
if (currentIndex != 0)
{
ESRI.ArcGIS.GlobeCore.IGlobeDrawingOrder globeDrawingOrder = (IGlobeDrawingOrder)m_globeControl.Globe;
m_Scene.MoveLayer(pLayer, currentIndex - 1);
globeDrawingOrder.MoveForward(pLayer);
axGlobeControl1.GlobeDisplay.RefreshViewers();
}
axTOCControl1.Update();
}
else
{
for (int i = 0; i < m_Map.LayerCount; i++)
{
pTempLayer = m_Map.get_Layer(i);
if (pTempLayer == pLayer)
{
currentIndex = i;
}
}
if (currentIndex != 0)
{
m_Map.MoveLayer(pMoveLayer, currentIndex - 1);
axMapControl1.ActiveView.Refresh();
}
}
axTOCControl1.Update();
将该图层下移一层:(Operate_3D为真时,是三维视图下调整;为假时,是二维视图下调整)
int currentIndex = -1;
ILayer pTempLayer;
if (Operate_3D)
{
for (int i = 0; i < m_Scene.LayerCount; i++)
{
pTempLayer = m_Scene.get_Layer(i);
if (pTempLayer == pLayer)
{
currentIndex = i;
}
}
if (currentIndex != m_Scene.LayerCount -1 )
{
ESRI.ArcGIS.GlobeCore.IGlobeDrawingOrder globeDrawingOrder = (IGlobeDrawingOrder)m_globeControl.Globe;
m_Scene.MoveLayer(pLayer, currentIndex + 1);
globeDrawingOrder.MoveBackward(pLayer);
axGlobeControl1.GlobeDisplay.RefreshViewers();
}
axTOCControl1.Update();
}
else
{
for (int i = 0; i < m_Map.LayerCount; i++)
{
pTempLayer = m_Map.get_Layer(i);
if (pTempLayer == pLayer)
{
currentIndex = i;
}
}
if (currentIndex != m_Map.LayerCount - 1)
{
m_Map.MoveLayer(pMoveLayer, currentIndex + 1);
axMapControl1.ActiveView.Refresh();
}
}
axTOCControl1.Update();