|
阅读:1214回复:1
使用Graphic实现动态流场显示【转贴】
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>
|
|
|
|
1楼#
发布于:2007-12-26 14:04
<IMG src="http://edu.bjenv.com/blog/UploadFiles/2007-11/231716193504.jpg" border=0>
|
|
|