gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1214回复:1

使用Graphic实现动态流场显示【转贴】

楼主#
更多 发布于:2007-12-26 14:03
1 准备工作<BR>选择合适的符号做一个箭头Symbol,表示流向, 绘制在各单元格中心<BR>    Private Sub DrawAllGraphics()<BR>        Dim Fc As IFeatureCursor = EnvLakelExtNet.NetFetureLayer.Search(Nothing, True)<BR>        Dim ft As IFeature = Fc.NextFeature<BR>        Dim Sym As ISymbol = GetCharacterSymbol()<BR>        Do While ft IsNot Nothing<BR>            Dim e As IMarkerElement = New MarkerElement<BR>            Dim p As IPoint = CType(ft.Extent, IArea).Centroid<BR>            CType(e, IElement).Geometry = p<BR>            e.Symbol = Sym<BR>            m_Map.GraphicsContainer.AddElement(e, 1)<BR>            Me.GraphicsList.Add(ft.(EnvLakelExtNet.WaspIDIndex), e)<BR>            ft = Fc.NextFeature<BR>        Loop<BR>        m_Map.PartialRefresh(esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)<BR>    End Sub<BR>2 根据每个时刻的流场方向旋转各个Graphic,表示流场方向<BR>Private Sub RotateGraphics(ByVal AngleHashTable As Hashtable)<BR>        For i As Integer = 1 To Me.GraphicsList.Count<BR>            CType(CType(Me.GraphicsList(i), IElement), ITransform2D).Rotate(CType(Me.GraphicsList(i), IElement).Geometry, AngleHashTable(i) - CType(Me.GraphicsList(i), IMarkerElement).Symbol.Angle / 180 * Math.PI)<BR>        Next<BR>        m_Map.PartialRefresh(esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)<BR>    End Sub<BR>需要注意的是ITransform2D.Rotate里的角度是弧度,而ISymbol中的角度是度,需要换算一下.<BR>
喜欢0 评分0
GIS麦田守望者,期待与您交流。
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2007-12-26 14:04
<IMG src="http://edu.bjenv.com/blog/UploadFiles/2007-11/231716193504.jpg" border=0>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部