質問

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

FillRectangle、DrawRectangle、FillElipse、およびDrawEllipseはすべて、x、y、幅、高さの4つのFloat(または<!> quot; Single <!> quot;)パラメーターを取ることができます。ただし、RectangleFを使用しないのはDrawRectangleのみです。

これがなぜなのか誰もが知っているのだろうかと思っていました。確かに彼らはただそれをオーバーロードするのを忘れていたようです。

役に立ちましたか?

解決

まあ、私にとっても省略のように見えます。

興味深いことに、RectangleF []配列をパラメーターとして使用するDrawRectanglesのオーバーロードがあります。

したがって、必要に応じて配列サイズ1でこれを使用できると思います。

他のヒント

Andyの回答によると、拡張子は以下のようになります

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

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

この質問は古いことは知っていますが、あくまで参考です。正しい方法は、 round または truncate (例:

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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top