页面载入中....
显示节点
By 3s4d 发表于 2007-7-28 12:57:00
这段程序的功能是像下图一样把地图中的线或面的节点显示出来.
private void
ShowVertex(
IScreenDisplay
screenDisplay,
IFeature
feature)
{
ISimpleMarkerSymbol
vertexMarkerSymbol =
new
SimpleMarkerSymbolClass
();
//用来设置节点样式
ISimpleMarkerSymbol
endPointMarkerSymbol =
new
SimpleMarkerSymbolClass
();
//用来设置首尾节点样式
IRgbColor
vertexColor =
new
RgbColorClass();
//节点颜色
IRgbColor
endPointColor =
new
RgbColorClass();
//首尾节点颜色
IPath
path =
new
PathClass
();
IList
endPointCol =
new
ArrayList
();
double
vertexMarkerSize = 2;
double
endPointMarkerSize = 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
IGeometryCollection
geoCol = (
IGeometryCollection
)feature.Shape;
int
geomsize = geoCol.GeometryCount;
for (
int
lgeom = 0; lgeom < geomsize; lgeom++)
{
//从GeometryCollection得到SegmentCollection
ISegmentCollection
segCol = (
ISegmentCollection
)geoCol.get_Geometry(lgeom);
path = (
IPath
)geoCol.get_Geometry(lgeom);
endPointCol.Add(path.FromPoint);
//得到首尾节点
endPointCol.Add(path.ToPoint);
int
segsize = segCol.SegmentCount;
for
(
int
lseg = 0; lseg < segsize; lseg++)
{
//重画节点
ISegment
segment = 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();
}
}
}
int
endsize = endPointCol.Count;
for
(
int
lend = 0; lend < endsize; lend++)
{
//
重画首尾节点
IPoint
endpoint = (
IPoint
)endPointCol[lend];
screenDisplay.StartDrawing(screenDisplay.hDC, (
short
)
esriScreenCache
.esriNoScreenCache);
screenDisplay.SetSymbol((
ISymbol
)endPointMarkerSymbol);
screenDisplay.DrawPoint(endpoint);
screenDisplay.FinishDrawing();
}
}
阅读全文
|
回复(2)
|
引用通告
|
编辑
标签:
AE
上一篇:
ArcGIS中的栅格数据的金字塔结构文件的位置问题(转)
下一篇:
发工资了、放假了、也该休息了!
Re:显示节点
By
rogerszyc(游客)
发表评论于
2007-12-20 14:51:34
感谢,为啥我用此代码后能把点画出来,但是马上又没有了呢??
望指点~
以下为blog主人的回复:
应该是刷新的问题,上面的代码我已经测试过了
是可以的
个人主页 |
引用
|
返回
|
删除
|
回复
Re:显示节点
By
lzh(游客)
发表评论于
2007-9-27 0:16:03
此代代码能在AE中运行吗?
可否转成VB代码?谢谢!
以下为blog主人的回复:
这个就是AE的代码啊 可以转成VB的
个人主页 |
引用
|
返回
|
删除
|
回复
发表评论:
大名:
密码:
(游客无须输入密码)
主页:
标题:
页面载入中....
站点公告
页面载入中....
站点日历
页面载入中....
最新日志
页面载入中....
最新评论
页面载入中....
最新留言
页面载入中....
友情链接
页面载入中....
站点统计
页面载入中....
日志搜索
页面载入中....
用户登陆
页面载入中....