簡體   English   中英

WPF,RichTextBox如何插入圖片

[英]WPF,How to insert image into RichTextBox

在此之前,我已經看到了一些方法可以做到這一點。 我將剪貼板圖片復制到 RichTextBox,但我想更改插入圖片的大小,這行不通

 var bmpSource = Clipboard.GetImage() as InteropBitmap;
                    if (bmpSource != null)
                    {
                        RichTextBox.Paste();
                    }

事實上,我希望能夠像這樣插入圖像。

  Paragraph para = new Paragraph();
        BitmapImage bitmap = new BitmapImage(new Uri(@"D:\S.JPG"));
        Image image = new Image();
        image.Source = bitmap;
        image.Width = 120;
        image.Height = 90;
        para.Inlines.Add(new InlineUIContainer(image, EditMessageRTB.Selection.Start));
        EditMessageRTB.Document.Blocks.Add(para);

但是WPF的RichTextBox不支持這種方式。 在文本之后插入圖像。它看起來像這樣......

“文字,文字” [圖片]

我想插入這樣的圖像...“文本”,[圖像]“文本”

有誰知道該怎么做?

您可以通過在添加圖像的富文本框中添加堆棧面板來執行此操作。 然后,您可以根據需要更改圖像的樣式,例如:

<Window.Resources>
        <BitmapImage x:Key="bitmap" UriSource="D:\S.JPG"/>
</Window.Resources>

        <RichTextBox>
            <FlowDocument>
                <Paragraph>
                    <Run Text="RichTextBox"/>
                    <StackPanel>
                        <Image Source="{StaticResource ResourceKey=Screen}" Width="120" Height="80"/>
                    </StackPanel>
                    <Run Text="RichTextBox"/>
                </Paragraph>
            </FlowDocument>
        </RichTextBox>

嘗試這個:

            FlowDocument fd = new FlowDocument();

            Paragraph p = new Paragraph();
            System.Windows.Controls.Image image = new System.Windows.Controls.Image();
            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.UriSource = GetUri("Images/ScanHead.png", typeof(PrintService));
            bi.EndInit();
            image.Stretch = Stretch.None;
            image.Source = bi;

            InlineUIContainer b = new InlineUIContainer(image);
            b.BaselineAlignment = BaselineAlignment.Center;
            p.Inlines.Add(b);
            InlineUIContainer b2 = new InlineUIContainer(new TextBlock() { Text="Text\r\n2nd row"});
            p.Inlines.Add(b2);

            p.FontStyle = FontStyles.Normal;
            p.FontFamily = new FontFamily("Arial");
            p.FontSize = 18;
            fd.Blocks.Add(p);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM