Graphics.DrawRectangle (Stift, RectangleF)
-
19-08-2019 - |
Frage
http://msdn.microsoft.com/ en-us / library / system.drawing.graphics.drawrectangle.aspx
FillRectangle, DrawRectangle, FillElipse DrawEllipse und alle können nehmen 4 Float (oder "Single") Parameter: x, y, Breite, Höhe. DrawRectangle ist die einzige, die eine RectangleF nicht nehmen, though.
Ich habe mich gefragt, ob jemand wüsste, warum das so ist. Es scheint sicher, wie sie einfach nur vergessen, es zu überlasten.
Lösung
Nun, es sicher sieht wie eine Unterlassung mir zu.
Interessanterweise gibt es eine Überlast von DrawRectangles, die einen RectangleF [] -Array als Parameter nimmt.
Also ich nehme an, Sie dies mit einer Reihe Größe eines verwenden könnten, wenn nötig.
Andere Tipps
Nach der Antwort der Andy die Erweiterung sollte wie unten sein
public static class GraphicsExtensions
{
public static void DrawRectangle(this Graphics g, Pen pen, RectangleF rect)
{
g.DrawRectangles(pen, new[] { rect });
}
}
von Andy Antwort Im Anschluss an diese einfache Erweiterung Methode macht das Leben leichter.
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);
}
Ich weiß, diese Frage ist alt, aber nur für eine Referenz: Ich glaube, der richtige Weg, entweder zu verwenden ist Runde oder truncate , wie:
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()