2014-09-19 16 views
0

下面的代码是不画任何东西:TextRenderer.DrawString不拉的长字符串

void Form3_Paint(object sender, PaintEventArgs e) 
{ 
     string text = new string('m', 3000); 
     TextRenderer.DrawText(
      e.Graphics, 
      text, 
      this.Font, 
      new Point(10, 10), 
      Color.Black, 
      Color.Transparent); 
} 

似乎字符串太长。如果我将字符串长度更改为2000,它可以工作(我使用SegoeUI 9)字体。

你知道这个解决方法吗?

+0

这是一行很多字符。绘制文本我只看到它用于一次绘制一条线,使用单个或双个空间进行多个显示。无论如何尝试使用'.DrawString()'代替。 – Franck 2014-09-19 11:00:58

+1

什么? 1年前你问过同样的问题并再次询问?真的吗?你在开玩笑吗?我们明年可能会期待同样的问题吗? – 2014-09-19 11:14:50

+0

也许这是他每年的仪式? – 2014-09-20 10:45:46

回答

1

我尝试你的代码块,它画。所以我将字符串长度增加到4401.之后,我的测试也失败了。

可能TextRender.DrawText方法对字符串有限制。但我认为这个限制应该取决于机器。

你想要一个解决方法。所以我建议Graphics.DrawString方法。

string text = new string('m', 4401); 
      e.Graphics.DrawString(text, 
       this.Font, 
       Brushes.Black, 
       new Point(0, 0) 
       ); 

编辑

哦!我搜索了这个问题,并在stackoverflow上找到了这个问题。

TextRenderer doesn't draw a long string

真是巧合!你在1年前问过同样的问题。