使用MeasureString时,"GDI +中发生了一般错误"

Vic*_*aru 5 c# gdi+ measurestring

我有一个覆盖(WinForms)MemoEdit控件(不幸的是我无法给你代码).如果我输入超过32000个字符,它会引发一个错误"GDI +中发生一般错误"我认为我的控件中有一个错误(异常),但后来我在一个简单的WinForm应用程序上测试了这段代码:

var myString = new string('G', 32001);
var g = this.CreateGraphics();
g.MeasureString(myString, Font, 1000);
Run Code Online (Sandbox Code Playgroud)

并且它崩溃与相同的确切错误有谁知道为什么会发生这种情况或者指定这个常量为32000的地方?我在Google上找不到任何有用的东西.

unk*_*656 0

字符串宽度可能超过 Int32.Max (您可以参考此线程)。

我知道如果您使用涉及特殊字符的阿拉伯语语言,则会出现错误(请参阅MSDN-Link : For bidirectional languages, such as Arabic, the string length must not exceed 2046 characters)。

为了解决您的问题,我建议每隔 31999 个字符拆分字符串并添加不同的大小/长度。