如何在自动换行后获得富文本内容的高度?

时间:2010-05-07 02:03:25

标签: c# winforms richtext

问题A.

给出

  1. 富文本格式的字符串,可能包含段落,制表符,空格,换行符,缩进,(甚至是图像?)
  2. 自动换行富文本控件/编辑器的宽度
  3. 如何在完成所有自动换行后知道内容的高度? 有什么像

    int MeasureRichTextHeightAfterWordWrap(string aRichTextContent,int aWidth)?

    否则那些富文本控件如何知道自动调整大小?

    我是否必须将内容实际放在虚拟富文本控件上,然后设置它的宽度并使用GetPositionFromCharIndex(TextLength-1)获取其高度? 虽然这确实有效,但似乎是“浪费”

    问题B. 如果我在纯文本备忘录/控件/编辑器上绘制纯文本,  并手动绘制字符串,手动计算缩进,中断,单词包装以伪装RTF。

    更容易还是更难?

    编辑让它看起来更清晰 对不起,如果我的英语看起来像学生,因为它不是我的母语。

1 个答案:

答案 0 :(得分:1)

很抱歉我第一次尝试回答错误。我 DID 找到了在RichTextBox内部进行测量的答案。显然你必须使用Win32 GDI API调用。

http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.windowsforms.controls/2004-09/0574.html

我通过在运行这个块之后更改我的搜索来找到这个,这解释了为什么没有纯粹的.NET方法来实现它:

http://www.developmentnow.com/g/38_2005_10_0_0_626243/I-dont-believe-this-code-gives-the-correct-RichTextBox-string-size.htm