То, что вы пытаетесь сделать, это извлечь растровое изображение из буфера обмена, как тип «Растровое изображение». Я не уверен, что Office вообще использует этот тип.
Обратите внимание, что DataFormats
не является перечислением; они просто ссылаются на строковые идентификаторы, обычно используемые для содержимого буфера обмена. Это сразу означает, что вы можете добавить пользовательские. Эти пользовательские обычно помещаются в буфер обмена как поток байтов. Этот ответ подробно описывает способ хранения и извлечения этих байтовых массивов в буфер обмена.
Одним из основных, который используется, является DIB (в основном, файл BMP без определенного заголовка файла), но Office специально использует их:
"PNG+Office Art"
"JFIF+Office Art"
"GIF+Office Art"
"PNG"
"JFIF"
"GIF"
(я слышал, что "+ Офисное искусство" - это тоже просто изображения, но я сам не пробовал)
Так что, да, если вы попытаетесь получить их, создайте новый MemoryStream
с байтами из буфера обмена и создайте новый Bitmap
из MemoryStream, вы должны быть там. Вы в основном пробуете их, пока не получите что-то, что прилипает, начиная с PNG.
Некоторое время назад я написал более подробное объяснение с полным кодом , которое было сосредоточено именно на копировании и извлечении PNG и DIB из буфера обмена.