标签: measurestring

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

我有一个覆盖(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上找不到任何有用的东西.

c# gdi+ measurestring

5
推荐指数
1
解决办法
1360
查看次数

如何实现自动换行?

XNA有Spritefont类,它有一个MeasureString方法,可以返回a的宽度和高度string.我试图了解如何创建一个方法,该方法将有效地返回Environment.Newline插入在正确位置的字符串,以便如果适合某个宽度和高度(Rectangle用作参数).

c# xna word-wrap spritefont measurestring

4
推荐指数
1
解决办法
2975
查看次数

GDI + MeasureString()错误地修剪文本

我正在尝试完成可以在屏幕上布局文本的代码.以下C#代码放在Paint一个空的Windows窗体的事件处理程序中是一个例子:

string[] s = new string[] { "Sample text ", "to test", " this layout ", "algorithm" };
PointF[] pts = new PointF[s.Length];
PointF start = new PointF(10, 10);
StringFormat f = new StringFormat(StringFormat.GenericTypographic);
float x = start.X;
float y = start.Y;
for (int i = 0; i < pts.Length; i++)
{
    pts[i] = new PointF(x, y);
    SizeF sz = e.Graphics.MeasureString(s[i], Font, pts[i], f);
    x += sz.Width;
    e.Graphics.DrawString(s[i], Font, Brushes.Black, pts[i]);
}
Run Code Online (Sandbox Code Playgroud)

除了修剪s数组中每段文本之前和之后的空白外,它才能正常工作.它应该显示如下:

用于测试此布局算法的示例文本

但相反它看起来像这样:

示例textto …

c# gdi+ measurestring

3
推荐指数
1
解决办法
2328
查看次数

标签 统计

c# ×3

measurestring ×3

gdi+ ×2

spritefont ×1

word-wrap ×1

xna ×1