lilysunny
路人甲
路人甲
  • 注册日期2003-08-18
  • 发帖数160
  • QQ
  • 铜币499枚
  • 威望0点
  • 贡献值0点
  • 银元0个
10楼#
发布于:2004-06-15 09:01
可以的,但是要用IGeoFeatureLayer就可以了!
黑夜给了你黑色的眼睛,你却拿它来翻白眼!
举报 回复(0) 喜欢(0)     评分
yejian8109
路人甲
路人甲
  • 注册日期2004-05-20
  • 发帖数36
  • QQ
  • 铜币251枚
  • 威望0点
  • 贡献值0点
  • 银元0个
11楼#
发布于:2004-06-14 20:01
<P>那可否让标注在指定的显示比例下才显示哪?就好象图层只有在MaximumScale 和MinimumScale 才显示出来</P><P>Dim pLayer As ILayer</P><P>set pLayer=MapControl1.Layer(<FONT color=#ff0033>0</FONT>)           </P><P>pLayer.MaximumScale = 14999999
pLayer.MinimumScale = 0</P>
举报 回复(0) 喜欢(0)     评分
yejian8109
路人甲
路人甲
  • 注册日期2004-05-20
  • 发帖数36
  • QQ
  • 铜币251枚
  • 威望0点
  • 贡献值0点
  • 银元0个
12楼#
发布于:2004-06-13 16:39
<P>有了!!!</P><P>好啊!!真是高啊!!!</P><P>我看帮助看了半天,把我弄的头都晕了</P><P>真是太感谢了!!</P><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
13楼#
发布于:2004-06-13 16:12
<P>请再加一行代码试试</P><P>Dim pGFeatureLayer As IGeoFeatureLayer
Set pGFeatureLayer = MapControl1.Layer(<FONT color=#ff0033>0</FONT>)           'MapControl1中只有states一个图层
加上:</P><P>pGFeatureLayer.DisplayAnnotation = True</P>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
yejian8109
路人甲
路人甲
  • 注册日期2004-05-20
  • 发帖数36
  • QQ
  • 铜币251枚
  • 威望0点
  • 贡献值0点
  • 银元0个
14楼#
发布于:2004-06-13 12:10
<P>改了还是没效果啊!!!</P><P>怎么回事啊!!!!</P>
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
15楼#
发布于:2004-06-12 22:10
<P>pLabelEngin.Expression = "<FONT color=#ff0033>state_name</FONT>" </P><P>加上方括号</P><P>pLabelEngin.Expression = "[<FONT color=#ff0033>state_name</FONT><FONT color=#000000>]"</FONT></P>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
yejian8109
路人甲
路人甲
  • 注册日期2004-05-20
  • 发帖数36
  • QQ
  • 铜币251枚
  • 威望0点
  • 贡献值0点
  • 银元0个
16楼#
发布于:2004-06-12 19:51
<P>版主的例子我用了没反映啊!!是不是我的程序有问题啊??怎么无法实现啊???</P><P>我的全部程序如下:</P><P>Private Sub Command1_Click()(<FONT color=#ff0033>我添加的图层states——esri自带的shp文件</FONT>)
Dim pWorkspaceFactory As IWorkspaceFactory
Dim pWorkspace As IWorkspace
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pWorkspace = pWorkspaceFactory.OpenFromFile("c:\usa", 0)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspace
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("states")
Dim pFLayer As IFeatureLayer
Set pFLayer = New FeatureLayer
Set pFLayer.FeatureClass = pFeatureClass
Dim pLayer As ILayer
Set pLayer = New FeatureLayer
Set pLayer = pFLayer
MapControl1.AddLayer pLayer
End Sub</P><P>Private Sub Command2_Click()
addlabel   ‘调用方法
End Sub</P><P>
Public Sub addlabel()
Dim pGFeatureLayer As IGeoFeatureLayer
Set pGFeatureLayer = MapControl1.Layer(<FONT color=#ff0033>0</FONT>)           'MapControl1中只有states一个图层
Dim pAnnProCol As IAnnotateLayerPropertiesCollection
Dim pLabelEngin As ILabelEngineLayerProperties
Set pAnnProCol = pGFeatureLayer.AnnotationProperties
Dim pBasicOverposterLayerProps As IBasicOverposterLayerProperties
Set pBasicOverposterLayerProps = New BasicOverposterLayerProperties
pBasicOverposterLayerProps.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape
Dim pTextSymbol As ITextSymbol
For i = 0 To pAnnProCol.Count - 1<FONT color=#f70968>’pAnnProCol.Count =1</FONT>
    pAnnProCol.QueryItem i, pLabelEngin
    pLabelEngin.Expression = "<FONT color=#ff0033>state_name</FONT>"               'states中的字段名
        Set pTextSymbol = New TextSymbol                  ‘定义字体
        Dim strFontName As String
        Dim pFont As stdole.StdFont
        'Create a font symbol and grab hold of the stdole.stdFont interface
        Set pFont = New stdole.StdFont
        'Set font and text symbol properties
        strFontName = "Arial"
        pFont.Name = strFontName
        pFont.Bold = True
        pFont.Size = 3
        pTextSymbol.Font = pFont
        Dim pcolor As IColor
        Set pcolor = New RgbColor
        pcolor.RGB = 255
        pTextSymbol.Color = pcolor
    Set pLabelEngin.Symbol = pTextSymbol      
    Set pLabelEngin.BasicOverposterLayerProperties = pBasicOverposterLayerProps
Next i
MapControl1.ActiveView.Refresh
End Sub
这是为什么啊!!!!!我是想了一天也不明白啊!!!</P><img src="images/post/smile/dvbbs/em18.gif" /><img src="images/post/smile/dvbbs/em18.gif" /><img src="images/post/smile/dvbbs/em18.gif" /><img src="images/post/smile/dvbbs/em18.gif" />
举报 回复(0) 喜欢(0)     评分
yingerren
路人甲
路人甲
  • 注册日期2004-04-08
  • 发帖数27
  • QQ
  • 铜币248枚
  • 威望0点
  • 贡献值0点
  • 银元0个
17楼#
发布于:2004-06-11 08:08
<b>问题解决了,谢谢斑竹!:)</b>
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
18楼#
发布于:2004-06-10 16:17
<P>不知道你有没有改对啊</P><P>Public Sub addlabel()

Dim pGFeatureLayer As IGeoFeatureLayer

<FONT color=#ff0000>Set pGFeatureLayer = Mapcontrol1.Layer(0)           '自己要标注图层</FONT></P><P>Dim pAnnProCol As IAnnotateLayerPropertiesCollection
Dim pLabelEngin As ILabelEngineLayerProperties
Set pAnnProCol = pGFeatureLayer.AnnotationProperties</P><P>Dim pBasicOverposterLayerProps As IBasicOverposterLayerProperties
Set pBasicOverposterLayerProps = New BasicOverposterLayerProperties
pBasicOverposterLayerProps.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape</P><P>For i = 0 To pAnnProCol.Count - 1
    pAnnProCol.QueryItem i, pLabelEngin
    <FONT color=#f70909>pLabelEngin.Expression = "[STATE_NAME]"               '<FONT color=#ff0000>自己要</FONT>标注的字段名</FONT>
    Set pLabelEngin.BasicOverposterLayerProperties = pBasicOverposterLayerProps
Next i</P><P>Mapcontrol1.ActiveView.Refresh
</P><P>End Sub
</P><P>GOoDLuck</P>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
yingerren
路人甲
路人甲
  • 注册日期2004-04-08
  • 发帖数27
  • QQ
  • 铜币248枚
  • 威望0点
  • 贡献值0点
  • 银元0个
19楼#
发布于:2004-06-10 14:00
斑竹,不行啊,没有反映,怎么回事?
举报 回复(0) 喜欢(0)     评分
游客

返回顶部