createrectrgn (gdi32)
Last changed: -88.159.15.38

.
Summary

C# Signature:

[DllImport("gdi32.dll")]
static extern IntPtr CreateRectRgn(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);

VB.NET Signature:

<DllImport("gdi32.dll")> _
Private Shared Function CreateRectRgn(ByVal nLeftRect As Integer, ByVal nTopRect As Integer, ByVal nRightRect As Integer, ByVal nBottomRect As Integer) As IntPtr
End Function

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

// Up Top

        [DllImport("user32.dll",EntryPoint="GetDC")]
        static extern IntPtr GetDC(IntPtr hWnd);

        [DllImport("gdi32.dll")]
        static extern bool FillRgn(IntPtr hdc, IntPtr hrgn, IntPtr hbr);

        [DllImport("gdi32.dll")]
        static extern IntPtr CreateRectRgn(int nLeftRect, int nTopRect, int nRightRect,
            int nBottomRect);

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

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

// Then whereever:

                // This paints the current form black
                IntPtr wDc = GetDC(this.Handle);
                int mx = Screen.PrimaryScreen.WorkingArea.Width;
                int my = Screen.PrimaryScreen.WorkingArea.Height;
                IntPtr brush = CreateSolidBrush(0x0); // black, of format : //0x00bbggrr
                FillRgn(wDc, CreateRectRgn(0,0,mx,my), brush);
                DeleteObject(brush);

Alternative Managed API:

No managed API. GraphicsPath can be used to create a similar functionality.

Do you know one? Please contribute it!

Documentation