private void RotateElement(IElement elem, double new_angle, IAGAnimationContainer pContainer)
{
ITransform2D transform2D = elem as ITransform2D;
IPoint rotateOrigin;
if (elem.Geometry.GeometryType == esriGeometryType.esriGeometryPoint)
{
rotateOrigin = elem.Geometry as IPoint;
}
else
{
IEnvelope elementEnvelope = elem.Geometry.Envelope;
IArea elementArea = elementEnvelope as IArea;
rotateOrigin = elementArea.Centroid;
}
AddPropertySet(elem);
IElementProperties prop = (IElementProperties)elem; //record the old properties
IPropertySet propSet;
propSet = (IPropertySet)prop.CustomProperty;
double old_angle;
old_angle = (double)propSet.GetProperty("Angle");
propSet.SetProperty("Angle", new_angle); //update old angle
transform2D.Rotate(rotateOrigin, new_angle-old_angle);
}