【发布时间】:2009-05-22 07:01:02
【问题描述】:
我正在一个大边界框上绘制一个字符串,并使用 StringFormat 适当地对齐字符串。但是,一旦绘制字符串,我需要字符串的实际 (X, Y) 位置(不仅仅是 MeasureString 给出的大小)。
我正在使用下面的代码:
CharacterRange[] ranges = { new CharacterRange(0, this.Text.Length) };
format.SetMeasurableCharacterRanges(ranges);
//Measure character range
Region[] region = g.MeasureCharacterRanges(this.Text, this.Font, layoutRect, format);
RectangleF boundsF = region[0].GetBounds(g);
bounds = new Rectangle((int)boundsF.Left, (int)boundsF.Top,
(int)boundsF.Width, (int)boundsF.Height);
这是一个代码段,因此请忽略任何缺少的声明。关键是上面代码给出的矩形大小不合适,字符串的最后一个字符被删除,只绘制了字符串的第一行。
有人知道为什么,或者有更好的方法吗?
谢谢
【问题讨论】: