绘制以矩形为中心的文本

时间:2012-11-19 21:55:36

标签: c# winforms gdi+

我有代码,类似于以下内容:

string myText = "This is a test";
Font myFont = new Font("Arial", 10);
Rectangle rect = new Rectangle(10,10,100,100);
Graphics g = e.Graphics;
g.DrawString(myText, myFont, rect.X, rect.Y);

虽然这样可行,但我想要做的是让文本在矩形的尺寸内垂直和水平居中。另外,如果它可能的话,我想把文字换成太大而不能放在一行上。我如何在C#/ GDI +中执行此操作?

2 个答案:

答案 0 :(得分:2)

我会使用其中一个DrawString Overloads StringFormat 你需要使用MeasureString检查文本的长度,以确保它适合并包裹它自己。进一步查看StringFormatFlags它有一个NoWrap标志暗示默认是换行:

来自上一个链接:

  

禁用矩形内的格式设置时在行之间进行文本换行。传递点而不是矩形时,或者当指定的矩形具有零线长时,隐含此标志。

答案 1 :(得分:0)

这种简单,未经研究的方法:

自动换行将字符串分解为更小的子字符串。即。

"this is"
"a test"

您可以使用String.Split()方法将字符串拆分为单词,然后将单词追加到一起,直到字符串达到某个阈值。然后创建一个新字符串。

对于居中,您可以用空格填充单个字符串。对于垂直居中,您可以在字符串的开头添加一些换行符。

我会把算术留给你。它不应该那么难。