Добавление метода расширения в класс 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); }