Извлечение изображений из RichTextBox - PullRequest
2 голосов
/ 16 июня 2011

У меня есть приложение, в которое пользователи могут вставлять изображения в RichTextBox.Я хотел бы иметь возможность заменить все изображения в формате RTF некоторым токеном и хранить изображения в отдельных файлах.Я вставлю изображения обратно в RTF позже.

Мне удалось заставить вставку работать, но в итоге я прибег к вставке их через буфер обмена (очень похоже на Вставка изображения в RTF-документ в 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. Есть ли более элегантное решение, которое не требует прохождения через буфер обмена?

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 13 октября 2013

Изображение будет выглядеть так:

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

или даже

{\pict ...}

Вы можете проверить RTF документа, содержащего изображение, и написать регулярное выражение для извлечения изображений(заменив их токенами).Другая замена регулярных выражений может восстановить изображения.

0 голосов
/ 22 июня 2011

Вы можете использовать этот RTF Converter для извлечения изображений RichTextBox, используя класс RtfVisualImageAdapter .

Ознакомьтесь с примерами:

  • RichTextBox: RtfWinForms (Windows Forms), RtfWindows (WPF)
  • Обработка изображений: Rtf2Html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...