xd45481162
路人甲
路人甲
  • 注册日期2004-12-23
  • 发帖数15
  • QQ
  • 铜币173枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2755回复:4

请教一下添加图例的问题

楼主#
更多 发布于:2007-04-18 17:14
<P>请问在PageLayoutControl里面添加图例应该怎么控制啊?好像只能自动添加,那些AddItem,ClearItems好像都没什么用。求路过的各位大哥帮个忙!!</P>
喜欢0 评分0
hikeryu
路人甲
路人甲
  • 注册日期2008-01-03
  • 发帖数18
  • QQ
  • 铜币159枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2009-08-15 09:19
这正是我所遇到的问题,解决了告诉我一声,谢谢了
举报 回复(0) 喜欢(0)     评分
xd45481162
路人甲
路人甲
  • 注册日期2004-12-23
  • 发帖数15
  • QQ
  • 铜币173枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-04-19 11:16
还真是我搞错了,现在可以了
举报 回复(0) 喜欢(0)     评分
xd45481162
路人甲
路人甲
  • 注册日期2004-12-23
  • 发帖数15
  • QQ
  • 铜币173枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2007-04-19 10:40
<P>谢谢总统先生,但是问题是我根本没有往Legend里面AddItem,生成的Legend里面也是所有图层都有,而就算ClearItems,Legend里面的东西都还在,不知道是不是我不会用。</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2007-04-18 21:15
下面的代码是在vba环境使用的,不过应该可以说明下接口的问题<PRE>Option Explicit
Sub Test()
    Dim pMxDoc As IMxDocument
    Set pMxDoc = ThisDocument
    
    Dim pGCS As IGraphicsContainerSelect
    Set pGCS = pMxDoc.PageLayout
    If pGCS.ElementSelectionCount <> 1 Then
        MsgBox "select a legend first"
        Exit Sub
    End If
    
    If Not TypeOf pGCS.SelectedElement(0) Is IMapSurroundFrame Then
        MsgBox "select a legend first"
        Exit Sub
    End If
    
    Dim pMSF As IMapSurroundFrame
    Set pMSF = pGCS.SelectedElement(0)
    If Not TypeOf pMSF.MapSurround Is ILegend Then
        MsgBox "select a legend first"
        Exit Sub
    End If
    
    Swap pMSF.MapSurround, 0, 1

End Sub

Sub Swap(pLegend As ILegend, ByVal lItem1 As Long, ByVal lItem2 As Long)

    If (lItem1 <= (pLegend.ItemCount - 1)) And _
       (lItem2 <= (pLegend.ItemCount - 1)) Then
        Debug.Print "before"
        List pLegend
        Dim pLegendItem As ILegendItem
        Set pLegendItem = pLegend.Item(lItem1)
        pLegend.RemoveItem lItem1
        If lItem2 > pLegend.ItemCount - 1 Then
            pLegend.AddItem pLegendItem
        Else
            If lItem1 < lItem2 Then
                pLegend.InsertItem lItem2, pLegendItem
            Else
                pLegend.InsertItem lItem2 - 1, pLegendItem
            End If
        End If
        Debug.Print "after"
        List pLegend
    Else
        MsgBox "bad item index passed to swap " ; pLegend.ItemCount
    End If
End Sub

Sub List(pLegend As ILegend)
    Dim l As Long
    For l = 0 To pLegend.ItemCount - 1
        Debug.Print pLegend.Item(l).Layer.Name
    Next l
End Sub
</PRE>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部