2011-06-16 144 views
2

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

我已经设法让插入工作,但最终诉诸粘贴他们通过剪贴板(非常喜欢Insert an image into RTF document in C#)。

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

  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. 是否有更优雅的解决方案,不需要通过剪贴板?

感谢您的帮助!

+0

[本文](http://www.codeproject.com/KB/edit/csexrichtextbox.aspx)是否提供了有意义的见解?我不知道这个答案,但我对自己的答案感兴趣。 =) – Smudge202 2011-06-16 19:11:34

回答

0

的图像看起来像这样:

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

甚至

{\pict ...} 

可以检查包含图像文件的RTF和写一个正则表达式提取的图像(与令牌代替它们)。 另一个正则表达式替换可以恢复图像。

0

您可以使用此RTF Converter使用类RtfVisualImageAdapter来提取RichTextBox的图像。

退房的例子:

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