Specify rotation center to the GraphObject and rotate
BOOL Rotate( double dAngle, point * ptCenter, BOOL bUndo = FALSE )
TRUE for success
EX1
void rotate_on_center(string name, int degree) { GraphObject gr; GraphLayer gl = Project.ActiveLayer(); if(gl) gr= gl.GraphObjects(name); if(gr) { gr.Rotate(degree, NULL, true); gl.GetPage().Refresh(); } }
EX2
// new Graph window, add a rectangle object, object name is Rect // set rotation center to top center and rotation angle 90: rotate_rect_on_top_center(90) void rotate_rect_on_top_center(int degree) { string strObj = "Rect"; GraphObject gr; GraphLayer gl = Project.ActiveLayer(); if(gl) gr= gl.GraphObjects(strObj); if(gr) { fpoint fpt1, fpt2; fpt1.x = gr.X;//center x fpt1.y = gr.Y + gr.DY*0.5;//top y fpt2 = gr.UnitsConvert(fpt1, UNITS_SCALE, UNITS_PIXEL); GraphObject_Rotate_ex(strObj, fpt2.x, fpt2.y, degree); } } void GraphObject_Rotate_ex(string name, int x, int y, int degree) { GraphObject gr; GraphLayer gl = Project.ActiveLayer(); if(gl) gr= gl.GraphObjects(name); if(gr) { point pt(x, y); //specify x, y in pixel gr.Rotate(degree, &pt, true); gl.GetPage().Refresh(); } }
origin.h