AO标注VC

AE 注记

1.通过IGeoFeatureLayer接口获取AnnotateLayerPropertiesCollection对象
IAnnotateLayerPropertiesCollectionPtr ipALyrPropColl;
ipGeoFeatureLayer->get_AnnotationProperties(&ipALyrPropColl);
if(ipALyrPropColl == NULL) return;


2.创建LabelEngineLayerProperties对象
2.1   LabelEngineLayerProperties由BasicOverposterLayerProperties组成
2.2   BasicOverposterLayerProperties由LineLabelPosition和LineLabelPlacement组成.

3.把LabelEngineLayerProperties对象添加到AnnotateLayerPropertiesCollection对象。

4.通过IGeoFeatureLayer接口设置标注可见。

 

 

void CWaveLayer::Anno(ILayerPtr ipFeatLyr, CString field)
{
 HRESULT hr;
 IGeoFeatureLayerPtr ipGeoFeatureLayer;
 IFeatureLayerPtr    ipFeatureLayer;

    ipFeatLyr->QueryInterface(__uuidof(IFeatureLayer), (void**)&ipFeatureLayer);
 if(ipFeatureLayer == NULL) return;

    ipFeatureLayer->QueryInterface(__uuidof(IGeoFeatureLayer), (void**)&ipGeoFeatureLayer);

 IAnnotateLayerPropertiesCollectionPtr ipALyrPropColl;
 ipGeoFeatureLayer->get_AnnotationProperties(&ipALyrPropColl);
 if(ipALyrPropColl == NULL) return;

 ipALyrPropColl->Clear();

 IAnnotateLayerPropertiesPtr ipAnnoLayerProps;

 ILineLabelPositionPtr  ipPosition;
    ILineLabelPlacementPrioritiesPtr ipPlacement;
 IBasicOverposterLayerPropertiesPtr ipBasic;
    ILabelEngineLayerPropertiesPtr ipLabelEngine;


    //标注的文字格式,注意
 ITextSymbolPtr ipTextSyl;
 ipTextSyl.CreateInstance(CLSID_TextSymbol);

 //CFont* pFont = CFont::FromHandle((HFONT)GetStockObject(DEFAULT_GUI_FONT));

 // //设置标注的字体

    IFontPtr pFont(__uuidof(StdFont));;
    pFont->put_Name((_bstr_t)"宋体");//字体集

 //CY cy;
    //cy.Hi = 50 * 72;
    //cy.Lo = 40 * 72;
    //pFont->put_Size(cy);
    //pFont->put_Bold(FALSE);
 //pFont->put_Weight(24);
    ipTextSyl->put_Font((IFontDispPtr)pFont) ;


 IColorPtr pColor;
 ipTextSyl->get_Color(&pColor);

    hr=pColor->put_RGB(RGB(0,120,0));//深绿色
    if(FAILED(hr)) return;


 hr = ipPosition.CreateInstance(CLSID_LineLabelPosition);
    if(FAILED(hr)) return;
    ipPosition->put_Parallel(VARIANT_TRUE);
 ipPosition->put_Perpendicular(VARIANT_FALSE);

 hr = ipPlacement.CreateInstance(CLSID_LineLabelPlacementPriorities);
 if(FAILED(hr)) return;

    hr = ipBasic.CreateInstance(CLSID_BasicOverposterLayerProperties);
 if(FAILED(hr)) return;

    hr = ipBasic->put_FeatureType(esriOverposterPolyline);
    if(FAILED(hr)) return;

    ipBasic->put_LineLabelPlacementPriorities(ipPlacement);
 ipBasic->put_LineLabelPosition(ipPosition);


        

 hr = ipLabelEngine.CreateInstance(CLSID_LabelEngineLayerProperties);
    if(FAILED(hr)) return;

    ipLabelEngine->putref_Symbol(ipTextSyl);
    ipLabelEngine->putref_BasicOverposterLayerProperties(ipBasic);
    ipLabelEngine->put_Expression((_bstr_t)"[Heiht]");
 

 ipLabelEngine->QueryInterface(__uuidof(IAnnotateLayerProperties), (void**)&ipAnnoLayerProps);
 if(ipAnnoLayerProps == NULL) return;

    ipALyrPropColl->Add(ipAnnoLayerProps);

    ipGeoFeatureLayer->put_DisplayAnnotation(VARIANT_TRUE);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值