在已经创建好的注记图层中对所有的注记进行一个位置的移动
这里主要是把注记图层当作FeatureClass来遍历并实现移动
public void FeatureChange(IFeatureClass pFeatureClass, IPoint point1, IPoint point2)
{
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
pFeature = pFeatureCursor.NextFeature();
while(pFeature!=null)
{
MoveAnnoation(pFeatureClass, pFeature,point2.X - point1.X, point2.Y - point1.Y);
pFeature = pFeatureCursor.NextFeature();
}
}
/// <summary>
/// 移动注记图层 按照变换的坐标
/// </summary>
/// <param name="pFeatureClass"></param>
/// <param name="pFeature"></param>
/// <param name="x"></param>
/// <param name="y"></param>
public void MoveAnnoation(IFeatureClass pFeatureClass, IFeature pFeature,double x,double y)
{
IFeatureClass annocls = pFeatureClass;
IWorkspace workspace = ((IDataset)annocls).Workspace;
IWorkspaceEdit workspaceEdit = workspace as IWorkspaceEdit;
bool startEdit = workspaceEdit.IsBeingEdited();
if (!startEdit)
{
workspaceEdit.StartEditing(false);
}
workspaceEdit.StartEditOperation();
IAnnotationFeature pAnnotationFeature = pFeature as IAnnotationFeature;
ITextElement pTextElement = pAnnotationFeature.Annotation as ITextElement;
IElement pElement = pTextElement as IElement;
ITransform2D pTransform = pElement.Geometry as ITransform2D;
pTransform.Move(x, y);
pElement.Geometry = pTransform as IGeometry;
pAnnotationFeature.Annotation = pElement;
pFeature.Store();
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);
}