阅读:1347回复:0
移动polyline的结点,我是这么做的~但是没有反映!
<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> |
|