inzafay
路人甲
路人甲
  • 注册日期2004-08-24
  • 发帖数46
  • QQ
  • 铜币349枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1347回复:0

移动polyline的结点,我是这么做的~但是没有反映!

楼主#
更多 发布于:2005-06-16 20:21
<P>先显示了一条线段的结点,然后想拖动结点,修改线段,但是拖动结点好象线段没有反应!请各位高手帮我参祥一下,不胜感激!</P>
<P>Dim m_blnShowVertexStatus As Boolean<BR>Dim m_pHitPt As IPoint<BR>Dim m_blMove As Boolean<BR>Private m_pDispFeed As IDisplayFeedback<BR>Dim pPolColl As IGeometryCollection, pPol As IPolyline, pHitTest As IHitTest, pTrans2D As ITransform2D, pPathColl As IPointCollection<BR>Dim pqpt As IPoint, dr As Double, pHit As IPoint, dht As Double, lPart As Long, lVertex As Long, bright As Boolean</P>
<P>Private Sub Map_OnMouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long, ByVal mapX As Double, ByVal mapY As Double)<BR> If m_blnShowVertexStatus Then<BR>     Set pPolColl = m_pSelGeo    'Here the polyline to be modified<BR>     Set pPol = pPolColl<BR>     Set pHitTest = pPolColl<BR>     Set pqpt = Map.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)       'This could be a user input point (Ex: Mouse click etc.)<BR>         <BR>     dr = 10000<BR>     Set m_pHitPt = New esriGeometry.Point<BR>     pHitTest.HitTest pqpt, dr, esriGeometryPartVertex, m_pHitPt, dht, lPart, lVertex, bright<BR>     <BR>     Set pPathColl = pPolColl.Geometry(lPart)    'Get the path where the point is<BR>     Set pTrans2D = pPathColl.Point(lVertex)     'Get the vertex that got hit<BR>     Set m_pDispFeed = New MovePointFeedback<BR>     Set m_pDispFeed.Display = Map.ActiveView.ScreenDisplay</P>
<P><BR>     Dim pMvPtFeed As IMovePointFeedback<BR>     Set pMvPtFeed = m_pDispFeed<BR>     pMvPtFeed.Start m_pHitPt, pqpt<BR>     <BR>       <BR>     <BR>   End If<BR> End If<BR>End Sub</P>
<P>Private Sub Map_OnMouseMove(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long, ByVal mapX As Double, ByVal mapY As Double)<BR>   If Not m_pDispFeed Is Nothing Then<BR>    <BR>    Dim pPnt As IPoint<BR>        Set pPnt = Map.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)<BR>    m_pDispFeed.MoveTo pPnt<BR>  End If</P>
<P>End Sub</P>
<P>Private Sub Map_OnMouseUp(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long, ByVal mapX As Double, ByVal mapY As Double)<BR>  If m_pDispFeed Is Nothing Then Exit Sub<BR>  Dim pMvPtFeed As IMovePointFeedback<BR>  Set pMvPtFeed = m_pDispFeed<BR>  Set m_pHitPt = pMvPtFeed.Stop<BR>  pPathColl.UpdatePoint lVertex, m_pHitPt      'Update the point via IPointCollection<BR>  pPolColl.GeometriesChanged       'To let the polyline knows its geometry changed<BR>  Map.ActiveView.Refresh<BR>  Set m_pDispFeed = Nothing<BR>  Set m_pHitPt = Nothing<BR>  <BR>End Sub</P>
喜欢0 评分0
游客

返回顶部