Engine中如何获取注记图层中的注记,并且编辑其样式?

Engine中如何获取注记图层中的注记,并且编辑注记样式?
已邀请:

朱新颖

赞同来自: 太阳升温了

【解决办法】:
(1)获取注记方法:将IAnnotationLayer转为IFeatureLayer,获取IFeatureClass,进而获取IFeature,转为IAnnotationFeature,即为注记。
(2)通过IAnnotationFeature.Anntation获取IElement,如果修改注记位置的话,可以重新设置IElement.Geometry。如果修改注记样式的话,将IElement转为ITextElement,获取ITextElement.Symbol,修改ITextSymbol即可。
注意:修改注记位置或者样式时需要开启编辑,并且修改后要将IAnnotationFeature转为IFeature,执行IFeature.Store();

阡陌

赞同来自:

请教下,我这样写修改注记图层中的文本颜色等,不能实现修改,是什么原因?谢谢!!!
IWorkspaceEdit pWorkspaceEdit = pWorkspace as IWorkspaceEdit;
                bool startEdit = pWorkspaceEdit.IsBeingEdited();
                if (!startEdit)
                {
                    pWorkspaceEdit.StartEditing(false);//开启编辑事物操作
                }
                pWorkspaceEdit.StartEditOperation();
                try
                {
                    while ((pFeature = m_FeatureCursor.NextFeature()) != null)
                    {
                        pAnnoFeature = pFeature as IAnnotationFeature;
                        pElement = pAnnoFeature.Annotation as IElement;
                        pTextElement = pElement as ITextElement;
                        ITextSymbol pTextSymbol = pTextElement.Symbol;
                        pTextSymbol.Size = Convert.ToDouble(cboSize.SelectedText.ToString());
                        pTextSymbol.Color = ConvertColortoIColor(cboColor.BackColor);

                        pElement = pTextElement as IElement;
                        pAnnoFeature.Annotation = pElement;
                        pFeature = pAnnoFeature as IFeature;
                        pFeature.Store();
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }             
                pWorkspaceEdit.StopEditing(true);
                pWorkspaceEdit.StopEditOperation();

要回复问题请先登录注册