【问题标题】:How can I add an image to my Run for a RichTextBlock?如何将图像添加到我的 Run for RichTextBlock?
【发布时间】:2008-10-13 20:26:49
【问题描述】:

我编写了一个小型 WPF 应用程序,我喜欢在其中将文本添加到 RichTextBox 中,以便将最新的内容放在首位。我写了这个,它有效:

    /// <summary>
    /// Prepends the text to the rich textbox
    /// </summary>
    /// <param name="textoutput">The text representing the character information.</param>
    private void PrependSimpleText(string textoutput)
    {
        Run run = new Run(textoutput);
        Paragraph paragraph = new Paragraph(run);

        if (this.RichTextBoxOutput.Document.Blocks.Count == 0)
        {
            this.RichTextBoxOutput.Document.Blocks.Add(paragraph);
        }
        else
        {
            this.RichTextBoxOutput.Document.Blocks.InsertBefore(this.RichTextBoxOutput.Document.Blocks.FirstBlock, paragraph);
        }
    }

现在我想制作一个新版本的功能,它也可以添加小图像。我很茫然 - 可以添加图像吗?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    尝试以下方法:

    BitmapImage bi = new BitmapImage(new Uri(@"C:\SimpleImage.jpg"));
    Image image = new Image();
    image.Source = bi;
    InlineUIContainer container = new InlineUIContainer(image);            
    Paragraph paragraph = new Paragraph(container); 
    RichTextBoxOutput.Document.Blocks.Add(paragraph);
    

    InlineUIContainer 是这里的“魔法”……您可以向其中添加任何 UIElement。如果要添加多个项目,请使用面板来包装项目(即 StackPanel 等)

    【讨论】:

    • 啊哈 - 我无法理解位图 -> 图像 -> inlineuicontainer -> 段落的东西。谢谢!!
    【解决方案2】:

    RickTextbox.Document 是一个 FlowDocument,您几乎可以在其中添加任何实现 ContentElement 的内容。这包括 Image、Label、StackPanel 和所有其他 WPF 收藏夹。

    查看FlowDocument Overview了解更多详情。

    【讨论】:

    • 谢谢,但我已经玩了一段时间了,似乎无法获得正确的对象组合以使其工作。
    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    相关资源
    最近更新 更多