绘制3维文字标注(IText3DElement )

         发一个如何在ArcGLobe中绘制三维文字标注的程序,呵呵,希望和大家交流一下~~

  static  IGraphicsLayer m_GraphLayer  =   null ;
        
public   static   void  Draw3DText(IGlobe pGlobe,  double  thisx,  double  thisy,  string  text,  int  Fsize,  int  red,  int  green,  int  blue)
        
{
            
if (m_GraphLayer != null)
            
{
                IGraphicsContainer3D pGC3Da 
= (IGraphicsContainer3D)m_GraphLayer;
                pGC3Da.DeleteAllElements();
                 pGlobe.GlobeDisplay.RefreshViewers();
            }
            

           
if (m_GraphLayer == null)
            
{
                m_GraphLayer 
= (IGraphicsLayer)new GlobeGraphicsLayer();
                ILayer thisilayer 
= (ILayer)m_GraphLayer;
                thisilayer.Name 
= "zapzqc";

                pGlobe.AddLayerType(thisilayer, esriGlobeLayerType.esriGlobeLayerTypeUnknown, 
true);
            }

            IGlobeGraphicsLayer pGL 
= (IGlobeGraphicsLayer)new GlobeGraphicsLayer();
            pGL 
= (IGlobeGraphicsLayer)m_GraphLayer;
            IPoint point 
= new PointClass();
            point.PutCoords(thisx, thisy);
            point.Z 
= 300;//控制字距离该坐标点的高度,zapzqc
            IText3DElement Ptext3DElement = new Text3DElementClass();
            Ptext3DElement.AnchorPoint 
= point;
            Ptext3DElement.Text 
= text;
            Ptext3DElement.BoldFont 
= true;
            Ptext3DElement.Alignment 
= esriT3DAlignment.esriT3DAlignHorizontal;
            Ptext3DElement.AxisRotation 
= esriT3DRotationAxis.esriT3DRotateAxisZ;
            Ptext3DElement.ZAxisScale 
= 1;
            Ptext3DElement.Justification 
= esriT3DJustification.esriT3DJustifyCenter;
            Ptext3DElement.Height 
= Fsize;
            
//改变字体颜色,zapzqc
            IRgbColor Fcolor = new RgbColorClass();
            Fcolor.Red 
= red;
            Fcolor.Blue 
= blue;
            Fcolor.Green 
= green;
            IFillSymbol pFillSymbol 
= new SimpleFillSymbol();
            pFillSymbol.Color 
= Fcolor;
            IFillShapeElement pFillShapeElement 
= Ptext3DElement as IFillShapeElement;
            pFillShapeElement.Symbol 
= pFillSymbol;
            IGraphicsContainer3D pGC3D 
= (IGraphicsContainer3D)new GlobeGraphicsLayer();
            pGC3D 
= (IGraphicsContainer3D)m_GraphLayer; //让m_GraphLayer获得Container
            pGC3D.AddElement(pFillShapeElement as IElement);
            pGlobe.GlobeDisplay.RefreshViewers();
        }
 

 这个应该还算比较简单的~~

 

你可能感兴趣的:(String,null)