代码
Private pMap As IMap
Private pActiveView As IActiveView
Private pGraphicsContainer As IGraphicsContainer
Private Sub axMapControl1_OnMouseDown(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent) Handles axMapControl1.OnMouseDown
'获得鼠标在控件上的点击的位置,产生一个点对象
Dim pPt As IPoint '添加引用Imports ESRI.ArcGIS.Geometry
pPt = New Point
pPt.PutCoords(e.mapX, e.mapY)
If pLineFeedback Is Nothing Then
pLineFeedback = New NewLineFeedback
pLineFeedback.Display = pActiveView.ScreenDisplay
pLineFeedback.Start(pPt)
Else
'已经画了第一条线,则只需要添加点
pLineFeedback.AddPoint(pPt)
End If
End Sub
Private Sub axMapControl1_OnMouseMove(ByVal sender As Object, ByVal e As IMapControlEvents2_OnMouseMoveEvent) Handles axMapControl1.OnMouseMove
Dim pPt As IPoint
pPt = New Point
pPt.PutCoords(e.mapX, e.mapY)
If Not pLineFeedback Is Nothing Then
pLineFeedback.MoveTo(pPt)
End If
End Sub
Private Sub axMapControl1_OnDoubleClick(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnDoubleClickEvent) Handles axMapControl1.OnDoubleClick
pGraphicsContainer = pMap
Dim pGeom As IGeometry
pGeom = pLineFeedback.Stop()
pLineFeedback = Nothing
'添加一个元素
addElement(pGeom, pGraphicsContainer)
End Sub
Private Sub addElement(ByVal pGeom As IGeometry, ByVal pGraphicsContainer As IGraphicsContainer)
pMap = axMapControl1.Map
pActiveView = pMap
pGraphicsContainer = pMap
Dim pLineSym As ISimpleLineSymbol
pLineSym = New SimpleLineSymbol
Dim pColor As IRgbColor
pColor = New RgbColor
pColor.Red = 220
pColor.Blue = 123
pColor.Green = 21
pLineSym.Color = pColor
pLineSym.Style = esriSimpleLineStyle.esriSLSSolid
Dim plineEle As ILineElement
plineEle = New LineElement
plineEle.Symbol = pLineSym
Dim pEles As IElement
pEles = plineEle
pEles.Geometry = pGeom
pGraphicsContainer.AddElement(pEles, 0)
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)
End Sub
Private pActiveView As IActiveView
Private pGraphicsContainer As IGraphicsContainer
Private Sub axMapControl1_OnMouseDown(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent) Handles axMapControl1.OnMouseDown
'获得鼠标在控件上的点击的位置,产生一个点对象
Dim pPt As IPoint '添加引用Imports ESRI.ArcGIS.Geometry
pPt = New Point
pPt.PutCoords(e.mapX, e.mapY)
If pLineFeedback Is Nothing Then
pLineFeedback = New NewLineFeedback
pLineFeedback.Display = pActiveView.ScreenDisplay
pLineFeedback.Start(pPt)
Else
'已经画了第一条线,则只需要添加点
pLineFeedback.AddPoint(pPt)
End If
End Sub
Private Sub axMapControl1_OnMouseMove(ByVal sender As Object, ByVal e As IMapControlEvents2_OnMouseMoveEvent) Handles axMapControl1.OnMouseMove
Dim pPt As IPoint
pPt = New Point
pPt.PutCoords(e.mapX, e.mapY)
If Not pLineFeedback Is Nothing Then
pLineFeedback.MoveTo(pPt)
End If
End Sub
Private Sub axMapControl1_OnDoubleClick(ByVal sender As Object, ByVal e As ESRI.ArcGIS.Controls.IMapControlEvents2_OnDoubleClickEvent) Handles axMapControl1.OnDoubleClick
pGraphicsContainer = pMap
Dim pGeom As IGeometry
pGeom = pLineFeedback.Stop()
pLineFeedback = Nothing
'添加一个元素
addElement(pGeom, pGraphicsContainer)
End Sub
Private Sub addElement(ByVal pGeom As IGeometry, ByVal pGraphicsContainer As IGraphicsContainer)
pMap = axMapControl1.Map
pActiveView = pMap
pGraphicsContainer = pMap
Dim pLineSym As ISimpleLineSymbol
pLineSym = New SimpleLineSymbol
Dim pColor As IRgbColor
pColor = New RgbColor
pColor.Red = 220
pColor.Blue = 123
pColor.Green = 21
pLineSym.Color = pColor
pLineSym.Style = esriSimpleLineStyle.esriSLSSolid
Dim plineEle As ILineElement
plineEle = New LineElement
plineEle.Symbol = pLineSym
Dim pEles As IElement
pEles = plineEle
pEles.Geometry = pGeom
pGraphicsContainer.AddElement(pEles, 0)
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)
End Sub