Я использую winforms с .net 4.7.2.
У меня проблема при вставке изображения из буфера обмена в RichTextBox.На некоторых платформах (Win2012 и Win2016) изображение сохраняется в формате RTF как \ pngblip.Когда я загружаю это снова в RichTextBox, изображение не отображается.
В Windows 7 оно сохраняет изображение как \ wmetafile8, которое отображается нормально.
Я загрузил оченьПростой пример проекта на Google Drive.Нажмите верхнюю кнопку, чтобы поместить изображение в буфер обмена и вставить его в текстовое поле исходного текста.Затем посмотрите, как он отображается в другом 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" отличается?Я думаю, что это ключ?
RTF с \ pngblip не может быть обработан RichTextBox - ни в Windows 7, ни в Windows 2012. \ wmetafile хорошо отрисовывается.
Это конечнопросто пример приложения - в реальной программе пользователь вставит изображение, которое было помещено в буфер обмена другим приложением, rtf будет сохранен в базе данных, а затем будет отображаться в другой форме.
И преобразование всего для использования HTML вместо этого не вариант, так как у нас есть существующая база данных с десятками тысяч записей RTF.