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.

War es hilfreich?

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top