wavvylia
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2715回复:4

用AO如何实现鹰眼?

楼主#
更多 发布于:2004-11-07 01:32
郁闷中,如何实现鹰眼?那个兄弟指点一下!
喜欢0 评分0
wrbwf
路人甲
路人甲
  • 注册日期2003-12-01
  • 发帖数944
  • QQ
  • 铜币2516枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-11-07 15:50
期待ing!
举报 回复(0) 喜欢(0)     评分
wlh_jimmy
路人甲
路人甲
  • 注册日期2004-02-02
  • 发帖数66
  • QQ309588724
  • 铜币363枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-11-08 16:56
<P>##  &Iacute;&acirc;&sup2;&iquest;
Private m_OverViewRenderer As IFeatureRenderer     '##  &Oacute;&yen;&Ntilde;&Ucirc;&micro;&Auml;&auml;&Ouml;&Egrave;&frac34;&Ecirc;&ocirc;&ETH;&Ocirc;&frac12;&Oacute;&iquest;&Uacute;&pound;&not;&Iacute;¨&sup1;&yacute;&Agrave;à&Ecirc;&ocirc;&ETH;&Ocirc;&micro;&Atilde;&micro;&frac12;  ##
'##</P><P>'##  &Auml;&Uacute;&sup2;&iquest;
Private m_MapActiveView As IActiveView             '##  &Iacute;&acirc;&sup2;&iquest;MapControl&micro;&Auml;ActiveView&Ecirc;&ocirc;&ETH;&Ocirc;&frac12;&Oacute;&iquest;&Uacute;&pound;&not;&Iacute;¨&Egrave;&laquo;&frac34;&Ouml;&Agrave;à&Ecirc;&ocirc;&ETH;&Ocirc;&micro;&Atilde;&micro;&frac12;  ##
Private m_OverViewActive As IActiveView            '##  &Oacute;&yen;&Ntilde;&Ucirc;&micro;&Auml;ActiveView &Ecirc;&ocirc;&ETH;&Ocirc;&frac12;&Oacute;&iquest;&Uacute;##
Private m_SimpleFillSymbol As ISimpleFillSymbol    '##  &Oacute;&yen;&Ntilde;&Ucirc;&Eacute;&Iuml;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò&micro;&Auml;Symbol&Ecirc;&ocirc;&ETH;&Ocirc;&Eacute;è&Ouml;&Atilde;  ##
Private m_Envelope As IEnvelope                    '##  &Oacute;&yen;&Ntilde;&Ucirc;&Eacute;&Iuml;&micro;&Auml;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò&micro;&Auml;·&para;&Icirc;§  ##
Private m_MoveEnvelopeFeedback As IMoveEnvelopeFeedback   '##  &Oacute;&Atilde;&Oacute;&Uacute;&Ograve;&AElig;&para;&macr;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò  ##
'##</P><P>'##  &Agrave;à&micro;&Auml;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;  ##
Private Sub Class_Initialize()
  Dim pSimpleLineSymbol As ISimpleLineSymbol
  Dim pRgbColor As IRgbColor
  
  '&para;&Ocirc;&Oacute;&yen;&Ntilde;&Ucirc;&Ouml;&ETH;&micro;&Auml;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò&micro;&Auml;Symbol&Ecirc;&ocirc;&ETH;&Ocirc;&frac12;&oslash;&ETH;&ETH;&micro;&Auml;&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;
  Set pRgbColor = New RgbColor
  With pRgbColor
    .Red = 255
    .Blue = 0
    .Blue = 0
  End With
  Set pSimpleLineSymbol = New SimpleLineSymbol
  pSimpleLineSymbol.Color = pRgbColor
  pSimpleLineSymbol.Width = 1
  Set m_SimpleFillSymbol = New SimpleFillSymbol
  m_SimpleFillSymbol.Outline = pSimpleLineSymbol
  m_SimpleFillSymbol.Style = esriSFSNull
  
  Set m_MapActiveView = g_clsGloble.Get_ActiveView
  
  Set pRgbColor = Nothing
  Set pSimpleLineSymbol = Nothing
End Sub</P><P>'##  &Agrave;à&micro;&Auml;&Ecirc;&Iacute;·&Aring;  ##
Private Sub Class_Terminate()
  Set m_SimpleFillSymbol = Nothing
End Sub</P><P>'##  &Oacute;&yen;&Ntilde;&Ucirc;&Ouml;&ETH;&micro;&Auml;&Iacute;&frac14;&sup2;&atilde;&micro;&Auml;&auml;&Ouml;&Egrave;&frac34;&ETH;§&sup1;&ucirc;&pound;&not;&Egrave;&ocirc;&Eacute;è&Ouml;&Atilde;&acute;&Euml;&Ecirc;&ocirc;&ETH;&Ocirc;&pound;&not;&Oacute;&yen;&Ntilde;&Ucirc;&Oacute;&ETH;&auml;&Ouml;&Egrave;&frac34;&ETH;§&sup1;&ucirc;&pound;&not;·&ntilde;&Ocirc;ò&Icirc;&THORN;&pound;&not;&frac12;&laquo;&Ograve;&Ocirc;&Euml;&aelig;&frac14;&acute;&auml;&Ouml;&Egrave;&frac34;&Iuml;&Ocirc;&Ecirc;&frac34;  ##
Public Property Let Set_Renderer(ByVal pFeatureRenderer As IFeatureRenderer)
  Set m_OverViewRenderer = pFeatureRenderer
End Property</P><P>
'## &Eacute;è&Ouml;&Atilde;&Oacute;&yen;&Ntilde;&Ucirc;&frac12;&laquo;&Iuml;&Ocirc;&Ecirc;&frac34;&Ocirc;&Uacute;&Auml;&Auml;&cedil;&ouml;&para;&Ocirc;&Iuml;ó&Ouml;&ETH;&pound;&not;&cedil;ù&frac34;&Yacute;HWND&frac34;&auml;±ú&Egrave;·&para;¨&pound;&not;&Ograve;&Ocirc;&frac14;°&Oacute;&yen;&Ntilde;&Ucirc;&Ouml;&ETH;&Iuml;&Ocirc;&Ecirc;&frac34;&Auml;&Auml;&cedil;&ouml;&Iacute;&frac14;&sup2;&atilde;&pound;&not;&Oacute;&Eacute;pFeaturClass&sup2;&Icirc;&Ecirc;&yacute;&Egrave;·&para;¨  ##
Public Function ConfirmOverViewDisplayObject(ByVal pFeatureCalss As IFeatureClass, ByVal hwnd As Double) As Boolean
  Dim pMap As IMap
  Dim pGeoFeatureLayer As IGeoFeatureLayer
  
  Set pGeoFeatureLayer = New FeatureLayer
  Set pGeoFeatureLayer.FeatureClass = pFeatureCalss
  If Not m_OverViewRenderer Is Nothing Then
    Set pGeoFeatureLayer.Renderer = m_OverViewRenderer
  End If
  pGeoFeatureLayer.Cached = True
  Set pMap = New Map
  pMap.AddLayer pGeoFeatureLayer
  Set m_OverViewActive = pMap
  m_OverViewActive.Activate hwnd
  SetOverView = True
  
  Set pGeoFeatureLayer = Nothing
  Set pMap = Nothing
  Set m_OverViewRenderer = Nothing
End Function</P><P>'##  &micro;±&Eacute;è&Ouml;&Atilde;&Iacute;ê&Oacute;&yen;&Ntilde;&Ucirc;&Iuml;&Ocirc;&Ecirc;&frac34;&Ocirc;&Uacute;&Auml;&Auml;&cedil;&ouml;&para;&Ocirc;&Iuml;ó&Ouml;&ETH;&ordm;ó&pound;&not;&frac12;&laquo;&Ocirc;&Uacute;&Auml;&Ccedil;&cedil;&ouml;&para;&Ocirc;&Iuml;ó&micro;&Auml;Paint&Ecirc;&Acirc;&frac14;&thorn;&Iuml;&Acirc;&micro;÷&Oacute;&Atilde;&acute;&Euml;&sup1;&yacute;&sup3;&Igrave;&pound;&not;&Ograve;&Ocirc;&Iuml;&Ocirc;&Ecirc;&frac34;&sup3;&ouml;&Oacute;&yen;&Ntilde;&Ucirc;  ##
Public Sub DrawOverView()
  Dim pTrackCancel  As ITrackCancel
  
  Set pTrackCancel = New CancelTracker
  m_OverViewActive.Draw m_OverViewActive.ScreenDisplay.hDC, pTrackCancel
  Set pTrackCancel = Nothing
End Sub</P><P>'##  &Ocirc;&Uacute;&Oacute;&yen;&Ntilde;&Ucirc;&Ouml;&ETH;&frac12;&laquo;&raquo;&shy;&sup3;&ouml;&Ograve;&raquo;&cedil;&ouml;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò&pound;&not;&Ograve;&Ocirc;&Iuml;ò&Oacute;&Atilde;&raquo;§&Otilde;&sup1;&Iuml;&Ouml;&Oacute;&yen;&Ntilde;&Ucirc;&Oacute;&euml;MapControl&micro;&Auml;&para;&Ocirc;&Oacute;&brvbar;&sup1;&Oslash;&Iuml;&micro;  ##
Public Sub DrawRectangle(ByVal pEnvelope As IEnvelope)
  Dim pOverViewScreen As IScreenDisplay
    
  Set m_Envelope = pEnvelope
  Set pOverViewScreen = m_OverViewActive.ScreenDisplay
  If (pEnvelope.Height < m_MapActiveView.FullExtent.Height) Then
    m_OverViewActive.PartialRefresh esriViewForeground, Nothing, Nothing
    With pOverViewScreen
      .StartDrawing .hDC, 0
      .UpdateWindow
      .SetSymbol m_SimpleFillSymbol
      .DrawRectangle pEnvelope
      .FinishDrawing
    End With
  ElseIf (pEnvelope.Height >= m_MapActiveView.FullExtent.Height) Then
    m_OverViewActive.PartialRefresh esriViewForeground, Nothing, Nothing
    Set m_Envelope = Nothing
    'With pOverViewScreen
    '  .StartDrawing .hDC, 0
    '  .UpdateWindow
    '  .SetSymbol m_SimpleFillSymbol
    '  .DrawRectangle m_OverViewActive.FullExtent
    '  .FinishDrawing
    'End With
  End If
End Sub</P><P>'##  &micro;±&Ecirc;ó±ê&Ocirc;&Uacute;&Oacute;&yen;&Ntilde;&Ucirc;&Eacute;&Iuml;&micro;&yen;&raquo;÷&Ecirc;±&pound;&not;&Aring;&ETH;&para;&Iuml;&Ecirc;&Ccedil;&raquo;&shy;&sup3;&ouml;&Agrave;&shy;&iquest;ò·&para;&Icirc;§&pound;&not;&raquo;&sup1;&Ecirc;&Ccedil;&Ograve;&AElig;&para;&macr;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò  ##
Public Sub OverView_MouseDown(ByVal button As Integer, ByVal x As Single, ByVal y As Single)
  Dim pPoint As IPoint
  Dim pRubberBand As IRubberBand
  Dim pGeo As IGeometry
  
  Set pPoint = m_OverViewActive.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)
  If button = 1 Then   '&Ecirc;ó±ê&Icirc;&ordf;×ó&frac14;ü&pound;&not;&frac12;&laquo;&raquo;&shy;&sup3;&ouml;&frac34;&Oslash;&ETH;&Icirc;,&Ccedil;&Ograve;&frac12;&laquo;MapControl&Ouml;&ETH;&micro;&Auml;·&para;&Icirc;§&Eacute;è&Icirc;&ordf;&acute;&Euml;&frac34;&Oslash;&ETH;&Icirc;·&para;&Icirc;§
    Set pRubberBand = New RubberEnvelope
    Set pGeo = pRubberBand.TrackNew(m_OverViewActive.ScreenDisplay, Nothing)
    If Not pGeo.IsEmpty Then    ''&Egrave;&ccedil;&sup1;&ucirc;&frac34;&Oslash;&ETH;&Icirc;&sup2;&raquo;&Icirc;&ordf;&iquest;&Otilde;&pound;&not;&raquo;&shy;&sup3;&ouml;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò&pound;&not;&Ccedil;&Ograve;&Eacute;è&Ouml;&Atilde;MapControl·&para;&Icirc;§
      m_MapActiveView.Extent = pGeo
      m_MapActiveView.Refresh
      DrawRectangle m_MapActiveView.Extent
    Else                        ''&Egrave;&ocirc;&Icirc;&ordf;&iquest;&Otilde;&pound;&not;&Ocirc;òMapControl·&para;&Icirc;§&acute;&brvbar;&Oacute;&Uacute;&Egrave;&laquo;&frac34;°×&acute;&Igrave;&not;&pound;&not;&Ccedil;&aring;&sup3;&yacute;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò
      m_MapActiveView.Extent = m_MapActiveView.FullExtent
      m_MapActiveView.Refresh
      m_OverViewActive.PartialRefresh esriViewForeground, Nothing, Nothing
      Set m_Envelope = Nothing
    End If
  Else                '&Ecirc;ó±ê&Icirc;&ordf;&Oacute;&Ograve;&frac14;ü&Ecirc;±&pound;&not;&frac12;&laquo;&Ograve;&AElig;&para;&macr;&frac34;&Oslash;&ETH;&Icirc;
    If Not m_Envelope Is Nothing Then
      Set m_MoveEnvelopeFeedback = New MoveEnvelopeFeedback
      Set m_MoveEnvelopeFeedback.Display = m_OverViewActive.ScreenDisplay
      m_MoveEnvelopeFeedback.Start m_Envelope, pPoint
    End If
  End If
  
  Set pRubberBand = Nothing
End Sub</P><P>'##  &micro;±&Ecirc;ó±ê&Ocirc;&Uacute;&Oacute;&yen;&Ntilde;&Ucirc;&Eacute;&Iuml;&Ograve;&AElig;&para;&macr;&Ecirc;±&pound;&not;&Aring;&ETH;&para;&Iuml;&Ecirc;&Ccedil;·&ntilde;&Ocirc;&Uacute;&frac34;&Oslash;&ETH;&Icirc;&iquest;ò&Ouml;&reg;&Eacute;&Iuml;&pound;&not;&Ocirc;&Uacute;&Ouml;&reg;&Eacute;&Iuml;&micro;&yen;&raquo;÷&Oacute;&Ograve;&frac14;ü&Ecirc;±&pound;&not;&iquest;&ordf;&Ecirc;&frac14;&Ograve;&AElig;&para;&macr;&frac34;&Oslash;&ETH;&Icirc;  ##
Public Sub OverView_MouseMove(ByVal x As Single, ByVal y As Single)
  Dim pPoint As IPoint
  
  Set pPoint = m_OverViewActive.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)
  If Not m_MoveEnvelopeFeedback Is Nothing Then
    m_MoveEnvelopeFeedback.MoveTo pPoint
  End If
End Sub</P><P>'##  &micro;±&Ecirc;ó±ê&micro;&macr;&AElig;&eth;&Ecirc;±&pound;&not;&frac12;&laquo;&frac34;&Oslash;&ETH;&Icirc;&Ograve;&AElig;&para;&macr;&Ecirc;ó±ê&Icirc;&raquo;&Ouml;&Atilde;
Public Sub OverView_MouseUp(ByVal x As Single, ByVal y As Single)
  Dim pEnv As IEnvelope
  If Not m_MoveEnvelopeFeedback Is Nothing Then
    Set pEnv = m_MoveEnvelopeFeedback.Stop
    DrawRectangle pEnv
    m_MapActiveView.Extent = pEnv
    m_MapActiveView.Refresh
    Set m_MoveEnvelopeFeedback = Nothing
  End If
End Sub
</P>
举报 回复(0) 喜欢(0)     评分
wavvylia
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-11-08 19:20
多谢兄弟,真是个大好人,先看看!
举报 回复(0) 喜欢(0)     评分
wlh_jimmy
路人甲
路人甲
  • 注册日期2004-02-02
  • 发帖数66
  • QQ309588724
  • 铜币363枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-11-09 16:19
<P>不用谢,多多交流,QQ:309588724</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部