.net - WinForms RichTextBox将图像保存为无法显示的pngblip
问题描述
我正在使用带有 .net 4.7.2 的 winforms。
将剪贴板中的图像粘贴到 RichTextBox 时出现问题。在某些平台(Win2012 和 Win2016)上,它将图像作为 \pngblip 存储在 RTF 中。当我在 RichTextBox 中再次加载它时,图像不会显示。
在 Windows 7 上,它将图像存储为 \wmetafile8 显示正常。
我已经将一个非常简单的示例项目上传到谷歌驱动器。按顶部按钮将图像放在剪贴板上并将其粘贴到源富文本框中。然后看看它在另一个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 条目的现有数据库。
解决方案
推荐阅读
- function - Matlab-Index in position 1 is invalid. Array indices must be positive integers or logical values
- r - 使用 pmap 函数检查一行中的所有值是正数还是负数
- python - TypeError: cannot do label indexing on
with these indexers [0] of - r - Change date to the last day of month using days_in_month
- javascript - How can I check if the user has some role from the list? Discord.js
- javascript - DiscordJS Check if command user has a role
- ssh - Can I use ssh-keygen and cfssl interchangeably for ssh login?
- android - Is there a Jetpack Compose equivalent of A password field with the password visible to the user?
- magento2 - Magento 2, warranty and returns verbiage
- python - Python: ModuleNotFoundError despite module being installed