如何加载WPF FormattedText对象(来自RTF或RichTextBox)

时间:2016-04-14 15:06:57

标签: c# wpf richtextbox rtf

我的WPF应用在大画布的各个地方显示了很多文字片段(一种便利贴应用)

我目前正在使用FormattedText对象渲染文本并“绘制它们”#39;直接进入视觉对象(速度/效率)

我遇到的挑战是如何加载/保存/编辑该富文本。我想使用RichTextBox编辑文本 - 但是我无法找到一种方法将文本从文本框中取出并转换为FormattedText对象(反之亦然)

任何人都知道如何实现这一目标?我能想到的唯一方法是在RTF'之间进行某种序列化。

表示FormattedText对象的功能 - 但似乎不存在。

由于

2 个答案:

答案 0 :(得分:1)

您可以遍历RichTextBox.Document内的所有内联对象,获取您感兴趣的所有依赖项属性,然后在新的FormattedText对象上设置它们。

var formattedTextToDraw = new List<FormattedText>();

foreach (var paragraph in RichTextBox.Document.OfType<Paragraph>())
{
    foreach(var inline in paragraph)
    {
        formattedTextToDraw.Add(new FormattedText(
            inline.Text, //Text
            inline.FontSize, //Fontsize
            inline.Foreground, //Color
            etc....) //Other properties for FormattedText constructor
    }
}

答案 1 :(得分:0)

Clemens上面http://www.wpfmentor.com/2009/01/how-to-transfer-rich-text-from.html发布的链接解决了我的问题。

与fooook的答案类似 - 遍历内联对象并将其属性应用于FormattedText对象。

格式化FormattedText不支持图像(比如iOS / OSX上的NSAttributedString)