页面载入中....
显示节点
By  3s4d 发表于 2007-7-28 12:57:00 

这段程序的功能是像下图一样把地图中的线或面的节点显示出来.
       private voidShowVertex(IScreenDisplayscreenDisplay, IFeaturefeature)
        {
            
ISimpleMarkerSymbolvertexMarkerSymbol = newSimpleMarkerSymbolClass();    //用来设置节点样式
            
ISimpleMarkerSymbolendPointMarkerSymbol = newSimpleMarkerSymbolClass(); //用来设置首尾节点样式
            
IRgbColorvertexColor = newRgbColorClass();    //节点颜色
            
IRgbColorendPointColor = newRgbColorClass(); //首尾节点颜色
            
IPathpath = newPathClass();
            
IListendPointCol = newArrayList();
            
doublevertexMarkerSize = 2;
            
doubleendPointMarkerSize = 2;
            vertexColor.Green = 255;
            endPointColor.Red = 255;
            vertexMarkerSymbol.Style =
esriSimpleMarkerStyle.esriSMSSquare;
            vertexMarkerSymbol.Size = vertexMarkerSize;
            vertexMarkerSymbol.Angle = 0;
            vertexMarkerSymbol.Color = vertexColor;
            endPointMarkerSymbol.Style =
esriSimpleMarkerStyle.esriSMSSquare;
            endPointMarkerSymbol.Size = endPointMarkerSize;
            endPointMarkerSymbol.Angle = 0;
            endPointMarkerSymbol.Color = endPointColor;
            endPointCol.Clear();
            if (feature.Shape.GeometryType ==
esriGeometryType.esriGeometryPolyline
                || feature.Shape.GeometryType ==
esriGeometryType.esriGeometryPolygon)
            {
               
                //从Geometry得到GeomegryCollection
               
IGeometryCollectiongeoCol = (IGeometryCollection)feature.Shape;
               
intgeomsize = geoCol.GeometryCount;
                for (
int lgeom = 0; lgeom < geomsize; lgeom++)
                {

                    //从GeometryCollection得到SegmentCollection
                    
ISegmentCollectionsegCol = (ISegmentCollection)geoCol.get_Geometry(lgeom);
                    path = (
IPath)geoCol.get_Geometry(lgeom);
                    endPointCol.Add(path.FromPoint); //得到首尾节点
                    endPointCol.Add(path.ToPoint);
                    
intsegsize = segCol.SegmentCount;
                    
for(intlseg = 0; lseg < segsize; lseg++)
                    {//重画节点
                        
ISegmentsegment = segCol.get_Segment(lseg);   //从SegmentCollection得到Segment
                        screenDisplay.StartDrawing(screenDisplay.hDC, (
short)esriScreenCache.esriNoScreenCache);
                        screenDisplay.SetSymbol((
ISymbol)vertexMarkerSymbol);
                        screenDisplay.DrawPoint(segment.FromPoint);        //重画Segment的端点
                        screenDisplay.DrawPoint(segment.ToPoint);
                        screenDisplay.FinishDrawing();
                    }
                }
            }
            
intendsize = endPointCol.Count;
            
for(intlend = 0; lend < endsize; lend++)
            {//重画首尾节点

               
IPointendpoint = (IPoint)endPointCol[lend];
                screenDisplay.StartDrawing(screenDisplay.hDC, (
short)esriScreenCache.esriNoScreenCache);
                screenDisplay.SetSymbol((
ISymbol)endPointMarkerSymbol);
                screenDisplay.DrawPoint(endpoint);
                screenDisplay.FinishDrawing();
            }
        }
 
阅读全文 | 回复(2) | 引用通告 | 编辑
  • 标签:AE 
  • Re:显示节点
    By  rogerszyc(游客)发表评论于2007-12-20 14:51:34 

    感谢,为啥我用此代码后能把点画出来,但是马上又没有了呢??
    望指点~
    以下为blog主人的回复:
    应该是刷新的问题,上面的代码我已经测试过了 
    是可以的

     
    个人主页 | 引用 | 返回 | 删除 | 回复
    Re:显示节点
    By  lzh(游客)发表评论于2007-9-27 0:16:03 

    此代代码能在AE中运行吗?
    可否转成VB代码?谢谢!
    以下为blog主人的回复:
    这个就是AE的代码啊  可以转成VB的

     
    个人主页 | 引用 | 返回 | 删除 | 回复

    发表评论:

      大名:
      密码: (游客无须输入密码)
      主页:
      标题:
      页面载入中....

     
    站点公告
    页面载入中....
    站点日历
    页面载入中....
    最新日志
    页面载入中....
    最新评论
    页面载入中....
    最新留言
    页面载入中....
    友情链接
    站点统计
    页面载入中....
    日志搜索
    用户登陆



     
    Powered by Oblog.