Добавление метода расширения в класс Graphics в C#

По какой-то странной причине метод DrawRectangle класса Graphics не может принимать параметр RectangleF в качестве параметра. Он может принимать значения Rectangle или four float, а метод FillRectangle может принимать RectangleF в качестве параметра, но метод DrawRectangle не может.

К счастью, легко добавить это как перегруженный метод расширения для класса Graphics. Следующий код показывает, как это работает программа примера.

public static class GraphicsExtensions
{
    // Нарисуем RectangleF.
    public static void DrawRectangle(this Graphics gr,
        Pen pen, RectangleF rectf)
    {
        gr.DrawRectangle(pen, rectf.Left, rectf.Top,
            rectf.Width, rectf.Height);
    }
}

Теперь программа может использовать новый метод расширения так же, как если бы он был включен в исходный класс. Следующий код показывает, как пример программы рисует свой прямоугольник.

private void Form1_Paint(object sender, PaintEventArgs e)
{
    // Нарисуем прямоугольник.
    RectangleF rectf = new RectangleF(10, 10,
        ClientSize.Width - 20, ClientSize.Height - 20);
    e.Graphics.DrawRectangle(Pens.Red, rectf);            
}

Источник: http://csharphelper.com/blog/2016/09/add-an-extension-method-to-the-graphics-class-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector