AE: 显示注记
来源:互联网 发布:php 空白页面 编辑:程序博客网 时间:2024/04/29 14:33
//附:1.注记可显示,但和图形对齐的方式没找到;2.没加注释---有愿意的不愿意。
HRESULT hr = E_FAIL;
IGeoFeatureLayerPtr pGeoFeaLyr;
IMapControl2Ptr pMapControl;
pMapControl=m_MapCtrl.get_Object();
pGeoFeaLyr=pMapControl->GetLayer(2);//层索引
if(pGeoFeaLyr == NULL) return;
//////////////////////////////////////////////////////////////////////////
ILineLabelPlacementPrioritiesPtr pLineLabPlaPrior(__uuidof(LineLabelPlacementPriorities));
hr = pLineLabPlaPrior->put_AboveAfter(3);
hr = pLineLabPlaPrior->put_AboveAlong(1);
hr = pLineLabPlaPrior->put_AboveBefore(3);
hr = pLineLabPlaPrior->put_AboveEnd(3);
hr = pLineLabPlaPrior->put_AboveStart(3);
hr = pLineLabPlaPrior->put_BelowAfter(3);
hr = pLineLabPlaPrior->put_BelowAlong(3);
hr = pLineLabPlaPrior->put_BelowBefore(3);
hr = pLineLabPlaPrior->put_BelowEnd(3);
hr = pLineLabPlaPrior->put_BelowStart(3);
hr = pLineLabPlaPrior->put_CenterAfter(3);
hr = pLineLabPlaPrior->put_CenterAlong(3);
hr = pLineLabPlaPrior->put_CenterBefore(3);
hr = pLineLabPlaPrior->put_CenterEnd(3);
hr = pLineLabPlaPrior->put_CenterStart(3);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
ILineLabelPositionPtr pLineLabPos(__uuidof(LineLabelPosition));
hr = pLineLabPos->put_Above(TRUE);
hr = pLineLabPos->put_AtEnd(FALSE);
hr = pLineLabPos->put_AtStart(FALSE);
hr = pLineLabPos->put_Below(FALSE);
hr = pLineLabPos->put_InLine(FALSE);
hr = pLineLabPos->put_Left(FALSE);
hr = pLineLabPos->put_OnTop(FALSE);
hr = pLineLabPos->put_Right(FALSE);
hr = pLineLabPos->put_Parallel(TRUE);
hr = pLineLabPos->put_Perpendicular(FALSE);
hr = pLineLabPos->put_Horizontal(FALSE);
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
IPointPlacementPrioritiesPtr pPtPlacePrior(__uuidof(PointPlacementPriorities));
hr = pPtPlacePrior->put_AboveCenter(2);
hr = pPtPlacePrior->put_AboveLeft(3);
hr = pPtPlacePrior->put_AboveRight(1);
hr = pPtPlacePrior->put_BelowCenter(3);
hr = pPtPlacePrior->put_BelowLeft(3);
hr = pPtPlacePrior->put_BelowRight(3);
hr = pPtPlacePrior->put_CenterLeft(30);
hr = pPtPlacePrior->put_CenterRight(2);
//////////////////////////////////////////////////////////////////////////
IBasicOverposterLayerPropertiesPtr pBasicOverLyrProps(__uuidof(BasicOverposterLayerProperties));
hr = pBasicOverLyrProps->put_NumLabelsOption(esriNoLabelRestrictions);
hr = pBasicOverLyrProps->put_PointPlacementPriorities(pPtPlacePrior);
hr = pBasicOverLyrProps->put_LineLabelPosition(pLineLabPos);
hr = pBasicOverLyrProps->put_LineLabelPlacementPriorities(pLineLabPlaPrior);
//////////////////////////////////////////////////////////////////////////
CString sExpress;
//sExpress.Format("Function FindLabel([Name],[Rank]) /n/rFindLabel=Right([Name],1)&[Rank]/n/rEnd Function");//复杂标到式,下面的IsExpressionSimple需设为FALSE
sExpress = _T("[ObjectID]& [Name]");//
ILabelEngineLayerPropertiesPtr pLabEngLyrProps(__uuidof(LabelEngineLayerProperties));
IAnnotateLayerPropertiesCollectionPtr pAnnoLyrPropsColl;
pGeoFeaLyr->get_AnnotationProperties(&pAnnoLyrPropsColl);
if(pAnnoLyrPropsColl == NULL) return;
pAnnoLyrPropsColl->Clear();
IAnnotateLayerPropertiesPtr pAnnoLyrProps = pLabEngLyrProps;
pAnnoLyrProps->put_WhereClause((_bstr_t)"[ObjectID] <= 3");
//////////////////////////////////////////////////////////////////////////
hr = pLabEngLyrProps->put_Expression(sExpress.AllocSysString());
hr = pLabEngLyrProps->put_IsExpressionSimple(VARIANT_TRUE);
//hr = pLabEngLyrProps->put_IsExpressionSimple(VARIANT_FALSE);
hr = pLabEngLyrProps->putref_BasicOverposterLayerProperties(pBasicOverLyrProps);
IAnnotationExpressionEnginePtr pAnnoExpEng(__uuidof(AnnotationVBScriptEngine));
IAnnotationExpressionParserPtr pAnnoExpParser;
hr = pAnnoExpEng->raw_SetExpression(_bstr_t(""),sExpress.AllocSysString(),&pAnnoExpParser);
hr = pLabEngLyrProps->putref_ExpressionParser(pAnnoExpEng);
IColorPtr pColor(__uuidof(RgbColor));
pColor->put_RGB(RGB(255,0,0));
IFontPtr pFont;
pFont.CreateInstance("StdFont");
pFont->put_Name((_bstr_t)"仿宋_GB2321");
pFont->put_Bold(TRUE);
CY cy;
cy.Hi = 10 * 80;
cy.Lo = 8 * 80;
pFont->put_Size(cy);
pFont->put_Italic(FALSE);
pFont->put_Underline(FALSE);
pFont->put_Strikethrough(FALSE);
IFontDispPtr pFontDisp(pFont);
ITextSymbolPtr pTextSym(__uuidof(TextSymbol));
pTextSym->put_Font(pFontDisp);
pTextSym->put_Size(18);
pTextSym->put_Color(pColor);
pTextSym->put_HorizontalAlignment(esriTHALeft);
pTextSym->put_RightToLeft(VARIANT_TRUE);
pLabEngLyrProps->putref_Symbol(pTextSym);
pAnnoLyrPropsColl->Add(pAnnoLyrProps);
pGeoFeaLyr->put_DisplayAnnotation(VARIANT_TRUE);
IActiveViewPtr pAV;
pAV=pMapControl->GetActiveView();
pAV->Refresh();
///////////////////////////////////////////////////////////////////////////////////////////
如下为C#代码
IAnnotateLayerPropertiesCollection pAnnoProps = null;
//得到图层的标注属性集合对象
IAnnotateLayerProperties pAnnoLayerProps = null; ;
ILineLabelPosition pPosition = null;
ILineLabelPlacementPriorities pPlacement = null;
IBasicOverposterLayerProperties pBasic = null;
ILabelEngineLayerProperties pLabelEngine = null;
pAnnoProps = pGeoFeaLyr.AnnotationProperties;
pAnnoProps.Clear();
//新建标注文本的文本编号
ITextSymbol pTextSyl = null;
pTextSyl = new TextSymbolClass();
stdole.StdFont pFont;
pFont = new stdole.StdFontClass();
pFont.Name = "宋体";
pFont.Size = 5;//字体大小
pTextSyl.Font = pFont as stdole.IFontDisp;
IRgbColor pRGB = new RgbColorClass();
pRGB.Red = 110; pRGB.Blue = 200; pRGB.Green = 60;
pTextSyl.Color = pRGB;
//设置标注文本的位置
pPosition = new LineLabelPositionClass();
pPosition.Parallel = false;
pPosition.Perpendicular = true;
pPlacement = new LineLabelPlacementPrioritiesClass();
pBasic = new BasicOverposterLayerPropertiesClass();
pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;
pBasic.LineLabelPlacementPriorities = pPlacement;
pBasic.LineLabelPosition = pPosition;
//新建一个图层标注引擎对象,设置它的属性
pLabelEngine = new LabelEngineLayerPropertiesClass();
pLabelEngine.Symbol = pTextSyl;
pLabelEngine.BasicOverposterLayerProperties = pBasic;
//field必须是这种样式,如”[STATE_NAME]”
pLabelEngine.Expression = sAnnoField;
pLabelEngine.Expression = "[" + sAnnoField + "]";
pAnnoLayerProps = pLabelEngine as IAnnotateLayerProperties;
pAnnoProps.Add(pAnnoLayerProps);
pGeoFeaLyr.DisplayAnnotation = true;
- AE: 显示注记
- ae指定字段转成注记
- ae指定字段转成注记
- AE
- ae
- AE编辑-显示、增加、删除节点
- C#+AE 调整TOCControl控件中图层的显示顺序。
- C#+AE实现类似IDentify功能及对高亮显示相关接口的总结
- 显示栅格图层和矢量图层的属性表(AE开发)
- AE+C#开发问题之二——axTOCControl控件图层不显示问题
- 在GIS二次开发mapcontrol空间中对要素显示气泡弹出框(AE开发)
- C#--button实现shp文件的打开显示功能,仅限AE
- AE实现右键点击TOC控件任意图层显示属性表
- c# AE 创建的shp 在arcmap中放大不显示处理
- C#+AE实现类似IDentify功能及对高亮显示相
- AE开发,有几个点,已知X,Y坐标,如何在AxMapControl中显示这些点
- 显示栅格图层和矢量图层的属性表(AE开发)
- android OpenGL开发使用JPCT-AE引擎显示3D立方体
- vc2005 中 CString转化int,int 转化CString
- Cognos系列之上路篇
- JQuery写的验证插件
- 8种Java JDBC数据库连接
- jdk 1.5 & 1.6
- AE: 显示注记
- Linux程序设计——用getopt处理命令行参数
- 如何判断万能打印机的好坏呢?
- 一些常用的正则表达式
- arrayCollection绑定到DataGrid
- JSP如何连接SQL SERVER 2005 Express
- 楼市股市涨了,物价呢?
- XSL中输出空格
- 点滴积累(二)