我有代码,类似于以下内容:
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 +中执行此操作?
答案 0 :(得分:2)
我会使用其中一个DrawString
Overloads StringFormat
你需要使用进一步查看MeasureString
检查文本的长度,以确保它适合并包裹它自己。StringFormatFlags
它有一个NoWrap标志暗示默认是换行:
来自上一个链接:
禁用矩形内的格式设置时在行之间进行文本换行。传递点而不是矩形时,或者当指定的矩形具有零线长时,隐含此标志。
答案 1 :(得分:0)
这种简单,未经研究的方法:
自动换行将字符串分解为更小的子字符串。即。
"this is"
"a test"
您可以使用String.Split()
方法将字符串拆分为单词,然后将单词追加到一起,直到字符串达到某个阈值。然后创建一个新字符串。
对于居中,您可以用空格填充单个字符串。对于垂直居中,您可以在字符串的开头添加一些换行符。
我会把算术留给你。它不应该那么难。