Add an extension method to the Graphics class in C#

[extension method]

For some strange reason, the Graphics class’s DrawRectangle method cannot take a RectangleF as a parameter. It can take a Rectangle or four float values, and the FillRectangle method can take a RectangleF as a parameter, but the DrawRectangle method cannot.

Fortunately it’s easy to add this as an overloaded extension method for the Graphics class. The following code shows how the example program does this.

public static class GraphicsExtensions
{
    // Draw a RectangleF.
    public static void DrawRectangle(this Graphics gr,
        Pen pen, RectangleF rectf)
    {
        gr.DrawRectangle(pen, rectf.Left, rectf.Top,
            rectf.Width, rectf.Height);
    }
}

Now the program can use the new extension method just as if it had been included in the original class. The following code shows how the example program draws its rectangle.

private void Form1_Paint(object sender, PaintEventArgs e)
{
    // Draw a rectangle.
    RectangleF rectf = new RectangleF(10, 10,
        ClientSize.Width - 20, ClientSize.Height - 20);
    e.Graphics.DrawRectangle(Pens.Red, rectf);            
}

Omitting this version of DrawRectangle seems like a relatively simple mistake. Fortunately it’s easy to fix with an extension method.


Download Example   Follow me on Twitter   RSS feed   Donate




This entry was posted in drawing, extension methods, extensions, graphics and tagged , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.