.net 图形.绘图矩形(笔、矩形F)

.net 图形.绘图矩形(笔、矩形F),.net,graphics,drawing,overloading,rectangles,.net,Graphics,Drawing,Overloading,Rectangles,FillRectangle、DrawRectangle、FilleIPSE和DrawEllipse都可以接受4个浮动(或“单个”)参数:x、y、宽度、高度。DrawRectangle是唯一一个不采用矩形的 我想知道是否有人知道这是为什么。看起来他们只是忘了让它过载。我也觉得这是个疏忽 有趣的是,有一个以矩形f[]数组为参数的Draw矩形重载 因此,如果需要的话,我想您可以将其与一个数组大小一起使用。根据Andy的回答,这个简单的扩展方法使生活更轻松 using System.Drawing;

FillRectangle、DrawRectangle、FilleIPSE和DrawEllipse都可以接受4个浮动(或“单个”)参数:x、y、宽度、高度。DrawRectangle是唯一一个不采用矩形的


我想知道是否有人知道这是为什么。看起来他们只是忘了让它过载。

我也觉得这是个疏忽

有趣的是,有一个以矩形f[]数组为参数的Draw矩形重载


因此,如果需要的话,我想您可以将其与一个数组大小一起使用。

根据Andy的回答,这个简单的扩展方法使生活更轻松

using System.Drawing;

public static class GraphicsExtensions
{
    public static void DrawRectangle(this Graphics g, Pen pen, RectangleF rect) =>
        g.DrawRectangle(pen, rect.X, rect.Y, rect.Width, rect.Height);
}

根据Andy的回答,扩展应如下所示

public static class GraphicsExtensions
{
    public static void DrawRectangle(this Graphics g, Pen pen, RectangleF rect)
    {
        g.DrawRectangles(pen, new[] { rect });
    }
}

我知道这个问题由来已久,但仅供参考:我认为正确的方法是使用或,例如:

Dim BBox As RectangleF = ListOfRectangleF(3)         ' get RectangleF any way you have it
Dim p As New Pen(Brushes.DarkRed)
e.Graphics.DrawRectangle(p, Rectangle.Round(ptBBox)) ' draw RectangleF using Rectangle.Round()