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