Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;GDI+;中发生一般性错误&引用;在使用测量时_C#_Gdi+_Measurestring - Fatal编程技术网

C# &引用;GDI+;中发生一般性错误&引用;在使用测量时

C# &引用;GDI+;中发生一般性错误&引用;在使用测量时,c#,gdi+,measurestring,C#,Gdi+,Measurestring,我有一个重写的(WinForms)MemoEdit控件(不幸的是,我无法提供代码)。 如果我输入的字符超过32000个,它会引发一个错误“GDI+中发生一般错误” 我原以为我的控件中有错误(异常),但后来我在一个简单的WinForm应用程序上测试了以下代码: var myString = new string('G', 32001); var g = this.CreateGraphics(); g.MeasureString(myString, Font, 1000); 它崩溃时也会出现同样

我有一个重写的(WinForms)MemoEdit控件(不幸的是,我无法提供代码)。 如果我输入的字符超过32000个,它会引发一个错误“GDI+中发生一般错误” 我原以为我的控件中有错误(异常),但后来我在一个简单的WinForm应用程序上测试了以下代码:

var myString = new string('G', 32001);
var g = this.CreateGraphics();
g.MeasureString(myString, Font, 1000);
它崩溃时也会出现同样的错误
有谁知道为什么会发生这种情况,或者在哪里指定了32000这个常数?我在Google上找不到任何有用的东西。

可能是字符串宽度超过了Int32.Max(您可以参考)

我知道,如果您使用包含特殊字符的阿拉伯语(请参阅:
对于双向语言,如阿拉伯语,字符串长度不得超过2046个字符),则会发生错误


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

这似乎是Windows 8中引入的一个新错误。我对旧版Windows中的行为感到好奇:


32000!=32k。另外:是测量,而不是字符串分配。@TaW:我知道,我的意思是像素的字符串宽度大于int32是的,好吧,这很奇怪:32000行,32001不行。像素中没有任何字符串宽度,除了他输入到MeasureString中的1000像素。最终的高度(他实际测量的高度)是几百像素,这取决于字体。源引导到核心例程中,以int形式传入长度。。很奇怪,我用英语作为一种语言。我没有试过其他语言。你用的是哪种字体和大小?在我的电脑上,它一直工作到
65535
。它在
65536上断开
此链接断开。你知道这个问题是否有新的联系吗?我的理解是,他们不想解决这个问题。最后两篇文章可以在网页的缓存版本中找到。弗兰克,谢谢你链接到缓存页面。好吧,这对我几天前刚刚打开的新bug报告来说不是个好兆头()。我们在任何Win8或更高版本的机器上都会遇到这个问题,这似乎与另一个bug帖子的解释相矛盾。我还没有收到MS的回复,但我怀疑我是否会喜欢他们的答案。。。