2

問題を再現するために linqpad で記述された C# コードを次に示します。

var font = new System.Drawing.Font("Arial", 8);
using (var g = System.Drawing.Graphics.FromHwnd(IntPtr.Zero))
{
    //65536 characters is fine
    g.DrawString("a".PadLeft(65535, 'a'), font, System.Drawing.Brushes.Black, new System.Drawing.RectangleF(0, 0, 1, 1));
    //65537 characters causes an error.
    g.DrawString("a".PadLeft(65536, 'a'), font, System.Drawing.Brushes.Black, new System.Drawing.RectangleF(0, 0, 1, 1));
    //65537 characters is however fine if the width is over 600581
    g.DrawString("a".PadLeft(65536, 'a'), font, System.Drawing.Brushes.Black, new System.Drawing.RectangleF(0, 0, 600582, 1));
}

文字列の長さとレイアウト長方形の幅の正確な関係を知っている人はいますか? 600581 という数字は非常に恣意的です。65536 は 0x10000 であるため、より理にかなっていますが。

4

1 に答える 1