[DllImport("gdi32.Dll")]
public static extern int CreateRoundRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidthEllipse, int nHeightEllipse);                                                               祝好运!

解决方案 »

  1.   

    private GraphicsPath MakePath(Rectangle objDrawRect)
    {
    int iMin;
    iMin = this.Height;
    if(this.Width<this.Height)
    iMin = this.Width; int iDia = iMin/6;
    if(iDia<6)iDia=6;

    GraphicsPath objGP=new GraphicsPath();
    objGP.AddArc(objDrawRect.Left,objDrawRect.Top,iDia,iDia,-180,90);
    //objGP.AddLine(objDrawRect.Left+iDia/2,objDrawRect.Top,objDrawRect.Right-iDia/2,objDrawRect.Top);
    objGP.AddArc(objDrawRect.Right-iDia,objDrawRect.Top,iDia,iDia,-90,90);
    objGP.AddLine(objDrawRect.Right,objDrawRect.Top+iDia/2,objDrawRect.Right,objDrawRect.Bottom-iDia/2);
    objGP.AddArc(objDrawRect.Right-iDia,objDrawRect.Bottom-iDia,iDia,iDia,0,90);
    objGP.AddLine(objDrawRect.Right-iDia/2,objDrawRect.Bottom,objDrawRect.Left+iDia/2,objDrawRect.Bottom);
    objGP.AddArc(objDrawRect.Left,objDrawRect.Bottom-iDia,iDia,iDia,90,90);
    objGP.AddLine(objDrawRect.Left,objDrawRect.Bottom-iDia/2,objDrawRect.Left,objDrawRect.Top+iDia/2);
    return objGP;
    }
    有了GraphicPath,随便怎么画都可以了 :)