我想在RichTextBox中添加一条水平线作为我的文本的分隔符 . 我找到了一些实现一行的RTF代码示例,并以这种方式尝试了它们:
rtbResFile.Rtf = @"{\rtf1{\pard some text.\par}{\pard \brdrb \brdrs \brdrw10 \brsp20 \par}{\pard \par}{\pard some other text.\par}}";
这种方式实现了创建带边框的空白段落,因此应该看起来像一条线 . 但它没有显示任何内容 . 只是一个空白段落 . 即使我尝试以包含线对象的方式实现它
{\rtf1
{\pard some text.\par}
{\pard {\*\do\dobxcolumn\dobypara\dodhgt
\dpline\dpxsize9200\dplinesolid\dplinew30}\par}
{\pard some other text.\par}
}
它仍然没有显示 . RichTextBox是否支持此功能?或者任何其他方式包括rtf字符串中的水平线?
2 回答
在RTF中创建水平线有几种不同的方法 . 根据所使用的控制或程序,您的里程可能会有所不同 . 控件和程序中的RTF实现往往忽略了他们不知道如何处理的标记 .
通过绘制多边形:
通过插入带有边框的空白段落,然后插入另一个没有边框的空白段落:
您可以通过在段落上设置缩进来更改行的大小和视在位置:
我强烈推荐O'Reilly的RTF Pocket Guide来处理这些东西,这就是它的来源 .
一些进一步的实验产生了下面的代码,它可以在写字板和RichTextBox控件中工作 .
基本上,它涉及插入黑点的1x1像素图像,并根据需要通过调整高度和宽度目标来拉伸它 . 目标衡量标准是缇 . 缇被定义为1/1440英寸 . 这是一个可怕的黑客,但它的工作原理 .
此功能创建一个仅为图片的水平条 . 为了创建这张图片,我只是将Visio中的水平条复制到RTF文本框中,然后查看底层的RTF . 因此,可以以这种方式插入任何图像 .
下面的代码通过将光标移动到文本的最末端,然后将“选定的”RTF设置为上述条形图来工作 . 然后取消选择该文本 .
代码将此栏设置为居中,但是通过将
centreText
设置为空字符串(或仅删除代码),将保持左对齐 .