WinForms RichTextBox сохраняет изображение в виде pngblip, которое не может быть отображено - PullRequest
0 голосов
/ 07 февраля 2019

Я использую 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.

...