如何在运行时在文本之间将图像插入到WPF RichTextBox中,以便文本浮动图像

时间:2012-02-04 12:38:21

标签: wpf richtextbox

我试图在运行时在文本之间将图像插入到WPF RichTextBox中,以便文本浮动。我尝试使用浮动,但最终结果是只能在图像旁边设置一行,其余内容转移到底部。

这是我到目前为止插入图片的代码:

    private Image SelectImage()
    {
        CommonDialog dialog = new CommonDialog();
        dialog.InitialDirectory =  System.Environment.SpecialFolder.MyDocuments.ToString();
        dialog.Filter.Add( new FilterEntry( Properties.Resources.StrImageFormats, "*.jpg;*.jpeg;*.gif;*.png" ) );
        dialog.Title = Properties.Resources.StrSelectImage;

        if ( dialog.ShowOpen() )
        {
            string filePath = dialog.FileName;
            BitmapImage bitmap = new BitmapImage( new Uri( filePath, UriKind.Absolute ) );
            Image image = new Image();
            image.Source = bitmap;
            image.Width = bitmap.Width;
            image.Height = bitmap.Height;
            return image;
        }
        return null;
    }

    private void ButtonInsertImage_Click( object sender, RoutedEventArgs e )
    {
        Image image = SelectImage();
        if ( image != null )
        {
            TextPointer tp = RTB.CaretPosition.GetInsertionPosition( LogicalDirection.Forward );
            Floater floater = new Floater( new BlockUIContainer( image ), tp );
        }
    }

但是当我将光标置于文本之间时,前面的代码会将图像插入到新行中,其余文本会出现在图像之后。有点像这样:

  

“Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in代表性的   [图片来自这里]
  [图片来自这里]
  [图片来自这里]
  [图片来自这里]
  voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum。“

如何插入图像以使文本浮动图像(图像右侧和左侧的文本多行)?

如果有人知道如何做到这一点,我很乐意在这里。非常感谢你。

1 个答案:

答案 0 :(得分:0)

当你知道如何时,这是很容易的。在代码中创建Floater的行之后,添加:

floater.HorizontalAlignment = HorizontalAlignment.Center;
floater.Width = bitmap.Width;

你希望Floater根据内容的大小来设置它的宽度,但由于它可能是你要包装的文本,所以它不能。您必须明确设置宽度。