RoundRect (gdi32)
Last changed: -67.168.202.202

.
Summary

C# Signature:

[DllImport("gdi32.dll")]
static extern bool RoundRect(IntPtr hdc, int nLeftRect, int nTopRect,
   int nRightRect, int nBottomRect, int nWidth, int nHeight);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

public class GDI32

    {
        #region GDI32 Functions
        [DllImport("gdi32.dll")]
        public static extern bool RoundRect(RECT lpRect, Point point);

        [DllImport("gdi32.dll")]
        public static extern bool RoundRect(IntPtr hdc, int nLeftRect, int nTopRect,
            int nRightRect, int nBottomRect, int nWidth, int nHeight);

        [DllImport("gdi32.dll")]
        public static extern IntPtr CreateSolidBrush(uint crColor);

        [DllImport("gdi32.dll")]
        public static extern IntPtr CreatePen(int fnPenStyle, int nWidth, uint crColor);

        [DllImport("gdi32.dll")]
        public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);

        [DllImport("gdi32.dll")]
        public static extern bool DeleteObject(IntPtr hObject);

        public static int RGB(Color color)
        {

/*

            byte [] RGBCOLORS = new byte [4];
            RGBCOLORS[0] = color.R;
            RGBCOLORS[1] = color.G;
            RGBCOLORS[2] = color.B;
            RGBCOLORS[3] = 0;
            return BitConverter.ToInt32(RGBCOLORS, 0);

*/

            return color.ToArgb() & 0xffffff;
        }

        #endregion
    }

public class RoundControl : System.Windows.Forms.Control

{

    protected override void OnPaint(PaintEventArgs e)
    {
         DrawRoundRect(e.Graphics)
    }

    public void DrawRoundRect(Graphics gr)
        {            
            RECT rect = new RECT(0, 0, this.Width, this.Height);
            IntPtr hDC = gr.GetHdc();
            IntPtr thePen = GDI32.CreatePen(0, 1, (uint)GDI32.RGB(Color.White));
            IntPtr theBrush = GDI32.CreateSolidBrush((uint)GDI32.RGB(Color.White));
            IntPtr oldPen = GDI32.SelectObject(hDC, thePen);
            IntPtr oldBrush = GDI32.SelectObject(hDC, theBrush);        

            GDI32.RoundRect(hDC, 0, 0, this.Width, this.Height, 20, 20);

            GDI32.SelectObject(hDC, oldPen);
            GDI32.DeleteObject(thePen);
            GDI32.SelectObject(hDC, oldBrush);            
            GDI32.DeleteObject(theBrush);

            gr.ReleaseHdc(hDC);            
        }

}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
RoundRect on MSDN