.NET FrameworkのSystem.Drawing.SizeFからSizeに変換するメソッドの違いを確認してみました。

コード

using System;
using System.Drawing;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var sizes = new SizeF[]
            {
                new SizeF(3.4f, 3.5f),
                new SizeF(-3.4f, -3.5f),
            };

            foreach (var size in sizes)
            {
                Console.WriteLine("Round: " + Size.Round(size));
                Console.WriteLine("Ceiling: " + Size.Ceiling(size));
                Console.WriteLine("Truncate: " + Size.Truncate(size));
                Console.WriteLine("ToSize: " + size.ToSize());
                Console.WriteLine();
            }
        }
    }
}

実行結果

Round: {Width=3, Height=4}
Ceiling: {Width=4, Height=4}
Truncate: {Width=3, Height=3}
ToSize: {Width=3, Height=3}

Round: {Width=-3, Height=-4}
Ceiling: {Width=-3, Height=-3}
Truncate: {Width=-3, Height=-3}
ToSize: {Width=-3, Height=-3}
Size.Round
四捨五入
Size.Ceiling

上に向かって丸める
Size.Truncate
小数点以下切り捨て
SizeF.ToSize
小数点以下切り捨て

分かりにくいのはCeilingですね。
天井という意味で、上に向かって丸めるので、
-3.4、-3.5は-4ではなく、-3になります。

Size構造体のメソッドにはありませんが、下に向かって丸めるのがMath.Floorで
-3.4、-3.5を-4に丸めます。
Floorは床って意味です。

TOP
TOP