实现非典型下划线样式

本文关键字:样式 下划线 非典型 实现 | 更新日期: 2023-09-27 18:21:04

我需要一个用于富文本框的特殊下划线样式。线条/下划线的颜色可以与上面的文字不同。线条的形状也应该是我在其他地方从未见过的。

是否可以通过利用一些功能来实现这一点,最好是从富文本控件继承?

我不确定如何相对容易地做到这一点,所以任何提示都非常感谢。我能想到的唯一方法就是完全从头开始实施它。例如,使用Graphics.DrawString等。这将是一项艰巨的工作。

我还检查了第三方控件,如DevExpress、Telerik、Infragistics、ComponentOne等。但它们似乎都不支持这一点。

实现非典型下划线样式

WPF RichTextBox控件用于编辑FlowDocument实例,其内容是用System.Windows.Documents命名空间中的类型定义的

每个Inline都有一个TextDecorations性质。它是添加到内联文本中的附加装饰(通常以行的形式)的列表。它们中的每一个都是TextDecoration类的一个实例。

每个TextDecoration都有自己的Pen,因此颜色与文本颜色无关。以下示例创建一个包含绿色字母、紫色下划线和橙色上划线的文本:

<Run Foreground="Green" Text="Hello, World!" FontSize="36">
    <Run.TextDecorations>
        <TextDecoration Location="Underline">
            <TextDecoration.Pen>
                <Pen Brush="Purple"/>
            </TextDecoration.Pen>
        </TextDecoration>
        <TextDecoration Location="OverLine">
            <TextDecoration.Pen>
                <Pen Brush="Orange"/>
            </TextDecoration.Pen>
        </TextDecoration>
    </Run.TextDecorations>
</Run>

一旦你到了那里,你就可以提供一个刷子,它不会完全填充区域,而是绘制形状,比如VisualBrush,以创建你想要的任何图案。