c# - 如何将图像插入 RichTextBox?

标签 c# vb.net image richtextbox rtf

我看到的大多数例子都说把它放在剪贴板上并使用粘贴,但这似乎不太好,因为它会覆盖剪贴板。

我确实看到了 one method使用 pinvoke 将图像手动放入 RTF 以将图像转换为 wmf。这是最好的方法吗?我可以做更直接的事情吗?

最佳答案

最直接的方法是修改 RTF 代码以自行插入图片。

在RTF中,一张图片是这样定义的:

'{'\pict (brdr? & shading? & picttype & pictsize & metafileinfo?) 数据 '}' 问号表示控制字是可选的。 “数据”只是十六进制格式的文件内容。如果要使用二进制,请使用\bin 控制字。

例如:

{\pict\pngblip\picw10449\pich3280\picwgoal5924\pichgoal1860 hex data}
{\pict\pngblip\picw10449\pich3280\picwgoal5924\pichgoal1860\bin binary data}

\pict = 开始一个图片组, \pngblip = png 图片 \picwX = 图片的宽度(X为像素值) \pichX = 图片的高度 \picwgoalX = 图片所需的宽度,以缇为单位

因此,要插入图片,您只需打开图片,将数据转换为十六进制,将这些数据加载到字符串中,并在其周围添加RTF 代码即可定义一张RTF 图片。现在,您有一个包含图片数据的自包含字符串,您可以将其插入到文档的 RTF 代码中。不要忘记结束符“}”

接下来,您从您的RichTextBox(rtbBox.Rtf)中获取RTF代码,将图片插入适当的位置,并设置rtbBox.Rtf的代码

您可能会遇到的一个问题是 .NET RTB 对 RTF 标准的支持不是很好。

我刚刚制作了一个小应用程序*,它允许您快速测试 RTB 中的一些 RTF 代码并查看它如何处理它。你可以在这里下载: RTB tester (http://your-translations.com/toys)。

您可以将一些 RTF 内容(例如来自 Word)粘贴到左侧的 RTF 框中,然后单击“显示 RTF 代码”以在右侧的 RTF 框中显示 RTF 代码,或者您可以将 RTF 代码粘贴到右侧RTB 并单击“应用 RTF 代码”以在左侧查看结果。

当然你可以随意编辑代码,这样可以很方便的测试RichTextBox是否支持你需要的命令,或者学习如何使用RTF控制字。

您可以在线下载 RTF 的完整规范。


NB 这只是我在 5 分钟内拼凑起来的一个小东西,所以我没有实现文件打开或保存、拖放或其他文明的东西。

关于c# - 如何将图像插入 RichTextBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830858/

相关文章:

c# - 如何在父类的主体中获取子类的名称

.net - VB.NET 中的显式接口(interface)实现

vb.net - 关闭由函数创建的 DbConnection

c# - 使用 Webclient.Uploadfile 在文件上传期间获取上传进度

laravel - 如何从store方法获取上传的图片名称

c# - 在 C# 中的字符串前添加 @ 符号

c# - DDD认证服务

c# - 对于 Windows 服务,等待旋转或计时器哪个更好?

javascript - 在链接悬停时显示图像

image - 使用 Image Magick 创建用于 OCR 的双色图像