从 RichTextBox 中提取图像

发布于 2024-11-16 02:01:19 字数 688 浏览 1 评论 0原文

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

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

现在的问题是如何提取图像。

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

  2. 我必须返回剪贴板吗?像这样的东西:

    IDataObject 数据 = Clipboard.GetDataObject();
    剪贴板.清除();
    
    _RichTextBox.Select(/* 图像 */);
    _RichTextBox.Copy();
    
    图像img = Clipboard.GetImage();
    img.Save("myImage.png", System.Drawing.Imaging.ImageFormat.Png);
    
    剪贴板.清除();
    剪贴板.SetDataObject(数据);
    
  3. 是否有更优雅的解决方案,不需要通过剪贴板?

感谢您的帮助!

I have an application where users may insert images into a RichTextBox. I'd like to be able to replace all the images in the RTF with some token and store the images in separate files. I'll inject the images back into the RTF later.

I've managed to get the insertion working but ended up resorting to pasting them via the Clipboard (very like Insert an image into RTF document in C#).

The trouble now is how to extract the images.

  1. How do I programatically select an image in a RichTextBox?

  2. Do I have to go back through the clipboard? Something like:

    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. Is there a more elegant solution that doesn't require going through the clipboard?

Thanks for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鲜肉鲜肉永远不皱 2024-11-23 02:01:19

图片看起来像这样:

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

或者甚至

{\pict ...}

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

A picture would look like this:

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

or even

{\pict ...}

You can check the rtf of the document containing the picture and write a regular expression to extract the images (replacing them with tokens).
Another regex replace can restore the images.

不及他 2024-11-23 02:01:19

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

查看示例:

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

You can use this RTF Converter to extract the images of a RichTextBox using the class RtfVisualImageAdapter.

Check out the examples:

  • RichTextBox: RtfWinForms (Windows Forms), RtfWindows (WPF)
  • Image Handling: Rtf2Html
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文