阅读:6070回复:18
常见的节点显示,移动,编辑功能
<P>常见的节点显示,移动,编辑功能</P>
[此贴子已经被作者于2005-3-21 12:37:02编辑过]
|
|
|
1楼#
发布于:2005-03-21 12:35
<P> Set pElement = GetLocateElement(pPoint, pGraphicsContainer)'自定义函数,LocateElement函数实现
If pElement Is Nothing Then Exit Sub Dim pEnvTracker As ISelectionTracker Set pEnvTracker = pElement.SelectionTracker</P> <P> .</P> <P>怎么样将这些pEnvTracker的节点显示出来,</P> <P> Set pEnvTracker.Display = pActiveView.ScreenDisplay pEnvTracker.ShowHandles = True pActiveView.PartialRefresh esriViewGraphicSelection, Nothing, pElement.SelectionTracker.Bounds(pActiveView.ScreenDisplay)</P> <P>这是我用的代码,没反应</P> <P></P> <P> </P> [此贴子已经被作者于2005-3-23 9:03:27编辑过]
|
|
|
2楼#
发布于:2005-03-22 14:56
<P>自己顶一下,已经做出来了!</P><P>需要代码者联系</P>
[此贴子已经被作者于2005-3-22 14:56:49编辑过]
|
|
|
3楼#
发布于:2005-03-22 15:46
<P>还没用到这个接口,是用来实现什么功能的?</P>
|
|
|
4楼#
发布于:2005-03-22 16:14
<P>编辑中很多地方都要用到</P><P>在布局视图里也会用到,移动,改变大小指南针,图例,比例尺等</P>
|
|
|
5楼#
发布于:2005-03-22 17:10
<P>哦 有这么好的接口我还没发现呢</P><P>回去研究一下。。</P><P>谢谢啦</P>
|
|
|
6楼#
发布于:2005-03-23 09:06
<P>贴出来么,如何联系你呀?</P><P>要不email给我;</P><P><a href="mailtsea_door@163.net" target="_blank" >sea_door@163.net</A></P><P>谢谢</P>
|
|
7楼#
发布于:2005-03-23 11:18
暂时还没用到,以后要用时再联系了。
|
|
8楼#
发布于:2005-03-23 13:22
<P>Private Sub PageLayout1_OnMouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long, ByVal pageX As Double, ByVal pageY As Double)
'选择元素 Dim ClickPoint As IPoint Set ClickPoint = PageLayout1.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y) '左键被按下 If button = 1 Then '如果元素没有被移动 If m_pMoveImageFeedback Is Nothing Then '如果一个元素被选择 If Not m_pSelectionTracker Is Nothing Then Dim pPoint As IPoint Set pPoint = New point pPoint.x = pageX pPoint.y = pageY '在选择了元素情况下,再在tracker外点击 If m_pSelectionTracker.HitTest(pPoint) = LocationNone Then '清空 Set m_pElement = Nothing Set m_pSelectionTracker = Nothing '选择元素 SelectElement ClickPoint PageLayout1.Refresh esriViewForeground PageLayout1.MousePointer = esriPointerDefault Else '如果在tracker里面 If m_pSelectionTracker.HitTest(pPoint) = LocationInterior Then '创建一个新的 MoveImageFeedback Set m_pMoveImageFeedback = New MoveImageFeedback Dim pDisplayFeedback As IDisplayFeedback Set pDisplayFeedback = m_pMoveImageFeedback Set pDisplayFeedback.Display = PageLayout1.ActiveView.ScreenDisplay 'Draw the element into the IMoveImageFeedbacks display m_pElement.Draw m_pMoveImageFeedback.Display, Nothing '设置开始点 m_pMoveImageFeedback.Start pPoint Set m_pPointStart = pPoint Else '鼠标位于节点上面外面 Dim pPnt As IPoint Dim DblSrchDis As Double Dim pGraContSel As IGraphicsContainerSelect Dim pAV As IActiveView Dim IntReszEdg As Integer Set pAV = Me.PageLayout1.ActiveView Set pGraContSel = pAV</P><P> ' 得到当前光标下的点 Set pPnt = pAV.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y) ' Hit test元素 IntReszEdg = m_pSelectionTracker.HitTest(pPnt) ' 检查是否点击了节点 If IntReszEdg = 0 Or IntReszEdg = 1 Then Set m_pSelectionTracker = Nothing Set m_pElement = Nothing Exit Sub End If ' Decrement the value of the hitresult (Hit result constants are two less than the resize edge feedbacks IntReszEdg = IntReszEdg - 2 '创建一个新的ResizeEnvelopeFeedback Set m_pResizeEnveFeedback = New ResizeEnvelopeFeedback '设置 feedback's display and resize edge Set m_pResizeEnveFeedback.Display = pAV.ScreenDisplay m_pResizeEnveFeedback.ResizeEdge = IntReszEdg ' Apply constraints (only useful if ResizeEdge is one of the corners) If button = 1 Then ' 没有约束 m_pResizeEnveFeedback.Constraint = esriEnvelopeConstraintsNone Else ' 约束 to a square m_pResizeEnveFeedback.Constraint = esriEnvelopeConstraintsSquare End If ' 开始 feedback并且移动 (避免返回空的矩形) m_pResizeEnveFeedback.Start m_pElement.Geometry.Envelope, pPnt m_pResizeEnveFeedback.MoveTo pPnt End If End If Else '没有选择到元素,就直接选择 SelectElement ClickPoint End If End If ElseIf button = 2 Then 'Zoom in PageLayout1.Extent = PageLayout1.TrackRectangle End If</P><P>End Sub</P> |
|
|
9楼#
发布于:2005-03-23 15:21
<P>已经给楼上滴加分,希望能看到更多好贴!</P><img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
上一页
下一页