RichTextBox中的图像(FlowDocument)

时间:2016-09-20 12:49:03

标签: c# wpf image richtextbox flowdocument

我可以"导入"图像(拾取文件)并将其包装在inlineUIContainer中的Border中 - 但是,当我保存文档时,图像消失(非常短的文件)。

或者我可以从剪贴板粘贴它(没有边框包装) - 然后它会随文档一起保存 - 但我无法控制显示...

导入图像(从文件中)的正确方法是什么,并保留实际的位图
在FlowDocument中,它可以与RichText的其余部分一起保存吗?

编辑:
我的问题似乎是,图像用URI表示(在XAML中) - 不是实际的位图 - 所以如何正确导入/嵌入它? 这是我的导入代码:

string fileName = openFileDialog.FileName;
BitmapImage bitmap = new BitmapImage(new Uri(fileName, UriKind.Absolute));

Image image = new Image();
image.Source = bitmap;
image.Width = bitmap.Width;
image.Height = bitmap.Height;

Border border = new Border();
border.Background = Brushes.Blue;
border.BorderBrush = Brushes.Red;
border.BorderThickness = new Thickness(10);
border.Margin = new Thickness(10);
border.Padding = new Thickness(10);

border.Child = image;

InlineUIContainer box = new InlineUIContainer(border, rt.CaretPosition);

1 个答案:

答案 0 :(得分:0)

尝试将图片封装在Viewbox而不是边框​​中,如下所示:

string fileName = openFileDialog.FileName;
BitmapImage bitmap = new BitmapImage(new Uri(fileName, UriKind.Absolute));

BlockUIContainer blockUI = new BlockUIContainer();
Image img = new Image();
img.Source = bitmap;
Viewbox vb = new Viewbox();
vb.StretchDirection = StretchDirection.DownOnly;
vb.Stretch = Stretch.Uniform;
vb.HorizontalAlignment = HorizontalAlignment.Center;
vb.VerticalAlignment = VerticalAlignment.Center;
vb.Child = img;
blockUI.Child = vb;

rt.Document.Blocks.Add(blockUI);