Как скопировать PNG-изображение в буфер обмена с помощью Delphi
используя Delphi 2010, я хотел бы скопировать PNG-изображение в буфер обмена, сохраняя при этом Альфа-прозрачность. К сожалению, TPngImage.Метод SaveToClipboardFormat нарисует его в растровое изображение, и прозрачность будет потеряна.
Я хотел бы, чтобы изображение PNG вставлялось в такие приложения, как Photoshop и Word с Альфа-прозрачностью.
есть идеи, как это сделать ? Как другие приложения делают, чтобы скопировать прозрачность в буфер обмена ?
3 ответов
возможно, они используют альтернативный формат буфера обмена, см. http://msdn.microsoft.com/en-us/library/ms649013 (VS.85).aspx для списка доступных форматов буфера обмена. Или они могут зарегистрировать свой собственный формат буфера обмена, такой как
RegisterClipboardFormat('PNG')
а затем просто напишите данные png в буфер обмена. Если указанная строка формата буфера обмена является стандартной (т. е. другие приложения регистрируют тот же формат буфера обмена) , вы сможете вставить ее в другие приложения, которые поддерживают этот формат буфера обмена.
возможно, вам придется вызывать функции windows напрямую, поскольку обертка буфера обмена Delphi не очень хороша.
сначала я скопирую изображение с информацией о прозрачности в буфер обмена в Photoshop, а затем изучу, что на самом деле находится в буфере обмена. Когда вы знаете это, вы, вероятно, можете выяснить, как написать эти данные самостоятельно.