从RichTextBox中提取图像

我有一个应用程序,用户可以将图像插入RichTextBox。 我希望能够用一些令牌替换RTF中的所有图像,并将图像存储在单独的文件中。 我稍后会将图像注入RTF。

我设法让插入工作,但最终通过剪贴板粘贴它们(非常像在C#中将图像插入RTF文档 )。

现在的麻烦是如何提取图像。

  1. 如何以编程方式选择RichTextBox中的图像?

  2. 我是否必须通过剪贴板返回? 就像是:

    IDataObject data = Clipboard.GetDataObject(); Clipboard.Clear(); _RichTextBox.Select(/* The image */); _RichTextBox.Copy(); Image img = Clipboard.GetImage(); img.Save("myImage.png", System.Drawing.Imaging.ImageFormat.Png); Clipboard.Clear(); Clipboard.SetDataObject(data); 
  3. 有没有更优雅的解决方案,不需要通过剪贴板?

谢谢你的帮助!

图片看起来像这样:

 {\*\shppict {\pict \emfblip ..... }}{\nonshppict {\pict ....}} 

甚至

 {\pict ...} 

您可以检查包含图片的文档的rtf并编写正则表达式来提取图像(用标记替换它们)。 另一个正则表达式替换可以恢复图像。

您可以使用此RTF转换器使用类RtfVisualImageAdapter提取RichTextBox的图像。

看看例子:

  • RichTextBox: RtfWinForms (Windows窗体), RtfWindows (WPF)
  • 图像处理: Rtf2Html