Как вставить прозрачное изображение из буфера обмена в приложении C # winforms?
===============================================================================

Примечание. Этот вопрос касается вставки из буфера обмена, а не копирования в буфер обмена. Существует несколько сообщений о копировании в буфер обмена, но не удалось найти ни одного, который бы отвечал на этот вопрос.

Как я могу вставить изображение с прозрачностью,[например этот](https://en.wikipedia.org/wiki/Portable_Network_Graphics)в приложение winforms и сохранить прозрачность?

Я пытался использовать`System.Windows.Forms.GetImage()`, но это создает растровое изображение с черным фоном.

Я копирую это изображение из Google Chrome, который поддерживает несколько форматов буфера обмена, в том числе`DeviceIndependentBitmap` а также`Format17`.

Chrome копирует изображение в буфер обмена в формате 24bpp. Что превращает прозрачность в черный. Вы можете получить 32-битный формат из буфера обмена, но это требует обработки формата DIB. В System.Drawing нет встроенной поддержки для этого, вам нужна небольшая вспомогательная функция, которая выполняет преобразование:

Пример использования:

Который создал этот снимок экрана со свойством BackgroundImage формы, установленным в растровое растровое изображение:

![enter image description here](/imgs/dNP7M.png)