В чем разница между System.Drawing.Point и System.Drawing.PointF - PullRequest
20 голосов
/ 17 сентября 2010

В чем разница между System.Drawing.Point и System.Drawing.PointF. Можете ли вы привести пример между этими двумя.

Заранее спасибо.

Ответы [ 3 ]

29 голосов
/ 17 сентября 2010

Point использует целочисленные координаты (int для X и Y).

PointF использует числа с плавающей запятой (float для X и Y).

22 голосов
/ 17 сентября 2010

Я думаю, PointF существует отчасти потому, что класс System.Drawing.Graphics поддерживает преобразование и сглаживание.Например, вы можете нарисовать линию между дискретными пикселями в режиме сглаживания.

    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эти функции будут ограничены.

0 голосов
/ 17 сентября 2010

Например, в некоторых встроенных системах, поддерживающих только «System.Drawing.Point», вы должны самостоятельно создать тип «PointF».

...