public bool Show(AnimData AD) { if (AD.animType == AnimOperation.AnimDraw || AD.animType == AnimOperation.AnimErase) { Point[] ptRect = new Point[4]; ptRect[0] = AD.ptRelRightTop; ptRect[1].X = AD.ptRelRightTop.X; ptRect[1].Y = -AD.ptRelRightTop.Y; int nRemainSteps = AD.iStep - AD.iTotalSteps; int nRemainAngle = AD.iParameter * nRemainSteps; double fxScale = MATRIXF.fixedDiv(AD.iStep, AD.iTotalSteps); double fxAngle = MATRIXF.fixedDiv(nRemainAngle, AD.iTotalSteps); MATRIXF matrix = MATRIXF.scaleMatrix(fxScale, fxScale) * MATRIXF.rotateMatrix(fxAngle); ptRect[0] = ptRect[0] * matrix; ptRect[1] = ptRect[1] * matrix; ptRect[2] = MATRIXF.sum(AD.ptCenter, ptRect[0]); ptRect[3] = MATRIXF.sum(AD.ptCenter, ptRect[1]); ptRect[0] = MATRIXF.subtract(AD.ptCenter, ptRect[0]); ptRect[1] = MATRIXF.subtract(AD.ptCenter, ptRect[1]); drawPoly(ptRect, AD.color); } //end if return(true); } //end Show