Pergunta

http://msdn.microsoft.com/ en-us / library / system.drawing.graphics.drawrectangle.aspx

FillRectangle, DrawRectangle, FillElipse e DrawEllipse tudo pode levar de 4 flutuador (ou "standard") parâmetros: x, y, largura, altura. DrawRectangle é o único que não vai demorar um RectangleF, no entanto.

Eu queria saber se alguém sabia o porquê disso. Com certeza parece que eles simplesmente se esqueceu de sobrecarregá-lo.

Foi útil?

Solução

Bem com certeza se parece com uma omissão para mim também.

Curiosamente, há uma sobrecarga de DrawRectangles que leva uma matriz RectangleF [] como um parâmetro.

Então, eu suponho que você poderia usar isso com um tamanho de matriz de um, se necessário.

Outras dicas

De acordo com a resposta do Andy a extensão deve ser tão abaixo

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

Na sequência da resposta de Andy, este método simples extensão torna a vida mais fácil.

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);
}

Eu sei que esta questão é antiga, mas apenas para uma referência: Eu acredito que a maneira correta é usar redonda ou truncar , tais como:?

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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top