实现非典型的下划线风格

时间:2014-09-07 17:21:48

标签: c# .net wpf

我需要一个特殊的下划线样式用于富文本框。线条/下划线可以具有与其上方文本不同的颜色。该线也应该具有我在其他任何地方都没见过的形状。

是否可以通过利用某些功能来实现这一点,理想情况下是从富文本控件继承?

我不确定如何相对容易地完成这项任务,因此非常感谢任何提示。我能想到的唯一方法是从头开始实现它。例如,使用Graphics.DrawString等。这将是非常多的工作。

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

1 个答案:

答案 0 :(得分:1)

WPF RichTextBox control用于编辑FlowDocument个实例,其内容使用System.Windows.Documents namespace中的类型定义。

每个Inline都有一个TextDecorations property。它是添加到内联文本中的其他装饰列表(通常以线的形式)。它们中的每一个都是TextDecoration class的实例。

每个TextDecoration获取its individual 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,以创建你想要的任何图案。