如何使用Delphi将PNG图像复制到剪贴板

11
使用Delphi 2010,我想将PNG图像复制到剪贴板并保留alpha透明度。不幸的是,TPngImage.SaveToClipboardFormat方法会将其绘制为位图,透明度将丢失。
我希望在应用程序(如Photoshop和Word)中粘贴PNG图像时能够保留alpha透明度。
有什么办法可以做到这一点?其他应用程序如何在剪贴板中复制透明度?

约翰,你做到了吗?因为我现在遇到同样的问题。你使用 TPNGObject 吗?我正在使用 D7,但我认为概念相同。 - Sara S.
就我所知,很少有应用程序能够在剪贴板中处理PNG格式,但这是一个旧项目,我无法记住确切的限制。 - jonjbar
3个回答

7
在 Delphi XE 中,我所做的只是:
Clipboard.Assign(Image1.Picture.Graphic);

7
我会先在Photoshop中将带有透明信息的图像复制到剪贴板,然后检查剪贴板上实际包含的内容。当你了解这一点后,你可能就能够想出如何自己编写这些数据。

4
可能他们使用了另一种剪贴板格式,可以查看http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx获取可用的剪贴板格式列表。或者他们可以注册自己的剪贴板格式,例如:
RegisterClipboardFormat('PNG') 

然后只需将PNG数据写入剪贴板即可。如果指定的剪贴板格式字符串是标准格式(即其他应用程序注册相同的剪贴板格式),则可以将其粘贴到支持此剪贴板格式的其他应用程序中。

您可能需要直接调用Windows函数,因为Delphi的剪贴板包装器并不是很好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接