PDFSharp在绘制长文本部分时支持自动文本换行:
textFormatter.DrawString(text, font, XBrushes.Black, new XRect(x, y, textAreaWidth, 1000), XStringFormats.TopLeft);
如果文本长于textAreaWidth
,则会将文本换行。
如何获得刚刚绘制的文本的高度?
我用gfx.MeasureString()
尝试过,但没有支持指定最大宽度的重载。 gfx.MeasureString()
返回文本的大小而不进行文本换行。
感谢任何提示。
答案 0 :(得分:3)
XTextFormatter类(PDFsharp附带的源代码)旨在帮助您入门。如果它不符合您的需要,请进行修改。
由于XTextFormatter在内部保持Y位置,因此返回刚刚绘制的文本的高度将是一个相当简单的更改。
不要修改XTextFormatter,而是考虑使用MigraDoc Foundation(也包括在内)。
答案 1 :(得分:3)
PdfSharp的扩展对我来说并不适用。不知道为什么,但我保持比预期更高的高度(几乎是所需高度的两倍)。所以我决定在XGraphics对象中编写一个扩展方法,我可以在其中指定maxWidth并在内部计算软换行符。
代码使用默认的public void form4()
{
...
add(okbutton);
}
public void receiver(String rlc)
{
x = Integer.parseInt(rlc);
parted = new JLabel[x]; // <--- now x is initialized
lite = 26/x;
...
来内联文本Width和Aggregates以及文本中的单词来计算换行符。
计算软换行符的代码如下所示:
XGraphics.MeasureString(string, XFont)
有关完整代码,请参阅以下要点:https://gist.github.com/erichillah/d198f4a1c9e8f7df0739b955b245512a
答案 2 :(得分:1)