web-dev-qa-db-ja.com

System.Drawing.PointとSystem.Drawing.PointFの違いは何ですか

違いは何ですか System.Drawing.PointおよびSystem.Drawing.PointF。この2つの例を挙げてください。

前もって感謝します。

20
Rye

PointFが存在する理由の1つはSystem.Drawing.Graphicsクラスは変換とアンチエイリアシングをサポートします。たとえば、アンチエイリアシングモードで離散pixelxの間に線を引くことができます。

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        Pen pen = Pens.Red;
        // draw two vertical line
        e.Graphics.DrawLine(pen, new Point(100, 100), new Point(100, 200));
        e.Graphics.DrawLine(pen, new Point(103, 100), new Point(103, 200));
        // draw a line exactly in the middle of those two lines
        e.Graphics.DrawLine(pen, new PointF(101.5f, 200.0f), new PointF(101.5f, 300.0f)); ;
    }

そしてそれは次のようになります

this

PointFがないと、これらの機能は制限されます。

22
tia

Pointは整数座標を使用します(intおよびXの場合はY)。

PointFは浮動小数点を使用します(floatおよびXの場合はY)。

29
Jon Skeet