1. 程式人生 > >用vc怎麼畫旋轉(非線性)橢圓

用vc怎麼畫旋轉(非線性)橢圓

 // Create points to simulate ellipse using beziers//使用貝塞爾曲線建立點,模擬橢圓void EllipseToBezier(CRect& r, CPoint* cCtlPt)  // MAGICAL CONSTANT to map ellipse to beziers  ///3*(sqrt(2)-1)  // 把橢圓對映為貝塞爾曲線的常量 2/3*(sqrt(2)-1)  const double EToBConst =.2761423749154;  CSize offset((int)(r.Width() * EToBConst), (int)(r.Height() * EToBConst));// Use the following line instead for mapping systems where +ve Y is upwards
// 在Y軸正方向向上時,使用下面一行// CSize offset((int)(r.Width() * EToBConst), -(int)(r.Height() * EToBConst));  CPoint centre((r.left + r.right) / 2, (r.top + r.bottom) / 2);  cCtlPt[0].x =              //------------------------/  cCtlPt[1].x =              //            /  cCtlPt[11].x =              //    2___3___4    /  cCtlPt[12].x = r.left;          //   1       5  /
  cCtlPt[5].x =              //   |       |  /  cCtlPt[6].x =              //   |       |  /  cCtlPt[7].x = r.right;          //   0,12     6  /  cCtlPt[2].x =              //   |       |  /  cCtlPt[10].x = centre.x - offset.cx;   //   |       |  /  cCtlPt[4].x =              //  11       7  /  cCtlPt[8].x = centre.x + offset.cx;   //    10___9___8    /
  cCtlPt[3].x =              //            /  cCtlPt[9].x = centre.x;         //------------------------*  cCtlPt[2].y =  cCtlPt[3].y =  cCtlPt[4].y = r.top;  cCtlPt[8].y =  cCtlPt[9].y =  cCtlPt[10].y = r.bottom;  cCtlPt[7].y =  cCtlPt[11].y = centre.y + offset.cy;  cCtlPt[1].y =  cCtlPt[5].y = centre.y - offset.cy;  cCtlPt[0].y =  cCtlPt[12].y =  cCtlPt[6].y = centre.y;