2011-06-16 98 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