C# 如何将图像嵌入RichTextBox?
我正在寻找一种方法来嵌入图像到富文本框。我的rtf文件是可移植的,它包含图像和文本。i、 e.它可以从一台计算机移动到另一台计算机。因此,用户应该能够看到rtf文件(文本+图像)的内容,即使它在另一台机器上 现在我使用以下代码插入图像C# 如何将图像嵌入RichTextBox?,c#,wpf,C#,Wpf,我正在寻找一种方法来嵌入图像到富文本框。我的rtf文件是可移植的,它包含图像和文本。i、 e.它可以从一台计算机移动到另一台计算机。因此,用户应该能够看到rtf文件(文本+图像)的内容,即使它在另一台机器上 现在我使用以下代码插入图像 public static void ApplyImage(RichTextBox RichTextBoxControl) { try { Microsoft.Win32.OpenFileDialog dlg = new Micro
public static void ApplyImage(RichTextBox RichTextBoxControl)
{
try
{
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt = ".png";
dlg.Filter = "PNG Files (.png)|*.png|JPG Files (.jpg)|*.jpg|GIF Files (.gif)|*.gif";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
string fileName = dlg.FileName;
if (File.Exists(fileName))
{
BitmapImage bi = new BitmapImage(new Uri(fileName));
Image image = new Image();
image.Source = bi;
InlineUIContainer container = new InlineUIContainer(image);
Paragraph paragraph = new Paragraph(container);
RichTextBoxControl.Document.Blocks.Add(paragraph);
}
}
}
catch
{
throw;
}
}
publicstaticvoidapplyimage(RichTextBox-RichTextBoxControl)
{
尝试
{
Microsoft.Win32.OpenFileDialog dlg=新的Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt=“.png”;
dlg.Filter=“PNG文件(.PNG)|*.PNG | JPG文件(.JPG)|*.JPG | GIF文件(.GIF)|*.GIF”;
可为空的结果=dlg.ShowDialog();
如果(结果==真)
{
字符串文件名=dlg.fileName;
if(File.Exists(fileName))
{
BitmapImage bi=新的BitmapImage(新的Uri(文件名));
图像=新图像();
image.Source=bi;
InlineUIContainer容器=新的InlineUIContainer(图像);
段落=新段落(容器);
RichTextBoxControl.Document.Blocks.Add(段落);
}
}
}
抓住
{
投掷;
}
}
但是这个代码不适合我的目的。因为嵌入的映像可能不在其他计算机中。所以它不会起作用。要么我需要嵌入图像,要么将图像作为二进制文件存储在rtf文件中。我到处都找遍了,没找到运气
有人能帮我吗?我找到了解决这个问题的办法。我不确定这是不是正确的方法,但这个解决方案仍然对我有效。希望它能帮助别人 解决方案是迭代flow文档中的所有图像标记,并将图像复制到可移植的存储库文件夹中。然后下次从该存储库文件夹加载图像,将图像显示回richtextbox
foreach (Block block in rtb.Blocks)
{
if (block is Paragraph)
{
Paragraph paragraph = (Paragraph)block;
foreach (Inline inline in paragraph.Inlines)
{
if (inline is InlineUIContainer)
{
InlineUIContainer uiContainer = (InlineUIContainer)inline;
if (uiContainer.Child is Image)
{
Image image = (Image)uiContainer.Child;
//Copy Image source to another repository folder and save the path.
}
}
}
}
吹毛求疵:抓/扔是多余的。谢谢你的信息。但我需要一个解决问题的办法。有什么帮助吗?好像没人知道怎么办。不可能吗?