Graphics.DrawRectangle (Pen, RectangleF)
-
19-08-2019 - |
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.
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()