我在.net 4.7.2中使用winforms。
将剪贴板中的图像粘贴到RichTextBox中时遇到问题。 在某些平台(Win2012和Win2016)上,它将图像作为\ pngblip存储在RTF中。当我再次将其加载到RichTextBox中时,图像不会显示。
在Windows 7上,它将图像存储为\ wmetafile8,显示正常。
我已将very simple sample project上传到Google云端硬盘。按顶部按钮将图像放在剪贴板上,然后将其粘贴到源富文本框中。然后查看它如何在另一个richtextbox中呈现以及rtf的外观。
这在Windows 7和Windows 2012上的工作原理有所不同。 在Windows 7上,目标rtf以
开头{\rtf1\ansi\ansicpg1252\deff0\deflang1030{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\f0\fs17{\pict\wmetafile8\picw423\pich423\picwgoal240\pichgoal240
0100090000...
请注意“发电机Msftedit”部分。 在Windows 2012上,我得到
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1030{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
{\*\generator Riched20 6.3.9600}\viewkind4\uc1
\pard\f0\fs17{\pict{\*\picprop{\sp{\sn wzDescription}{\sv Image}}{\sp{\sn posv}{\sv 1}}
}\pngblip\picw423\pich423\picwgoal240\pichgoal240
895...
“发电机Riched20”在这里与众不同吗?我认为这很关键吗?
带有\ pngblip的rtf不能通过RichTextBox呈现-在Windows 7和Windows 2012上都无法呈现。\ wmetafile可以很好地呈现。
这当然只是一个示例应用程序-在实际程序中,用户将粘贴另一个应用程序放置在剪贴板上的图像,rtf将保存到数据库中,稍后将由不同的形式。
将所有内容都转换为使用HTML并不是一种选择,因为我们现有的数据库具有成千上万的RTF条目。