Проблема, с которой вы сталкиваетесь, заключается в том, что есть два разных класса Clipboard
, один для WinForms и один для WPF
. WinForms one возвращает растровые изображения, которые подходят для использования с WinForms, т.е. System.Drawing.Bitmap
, который в используемом вами коде копирует его в System.Drawing.Image
.
Эти типы растровых изображений бесполезны с WPF, поэтому ожидается, что тот факт, что вы не можете преобразовать то, что версия WPF класса Clipboard
дает вам тип, который полезен с WinForms, является ожидаемым, а на самом деле не вашей проблемой.
Ваша проблема в том, что для WPF вам нужен тип растрового изображения, который вы можете использовать с WPF: a BitmapSource
. Это то, что вы можете использовать с элементами управления WPF, такими как Image
. Итак, вернемся к вашему вопросу:
- если вы используете WPF4, вы можете использовать
Clipboard.GetImage
, который возвращает BitmapSource
, именно то, что вам нужно
- если вы используете что-то еще, вы можете использовать технику Томаса Левеска, описанную здесь
В итоге:
- Для WinForms: буфер обмена WinForms => Растровые изображения WinForms
- Для WPF: буфер обмена WPF => Растровые изображения WPF