Das ist kein Problem. Ich glaube mich zu erinnern, dass sogar Excel 2003 schon das PNG Format unterstützt hat. Kopieren geht auch sehr einfach über die
API (im Test mit einem TImage namens Image1 mit einem geladenen PNG):
Delphi-Quellcode:
var
DataStream: TMemoryStream;
Data: Pointer;
DataHandle: THandle;
ClipboardFormat: Integer;
begin
// Das Format sollte man natürlich eher nur beim Start der Anwendung einmal registrieren
ClipboardFormat := RegisterClipboardFormat('PNG');
DataStream := TMemoryStream.Create;
try
// Die Bilddaten können natürlich auch direkt aus einer Datei usw. stammen
Image1.Picture.Graphic.SaveToStream(DataStream);
DataHandle := GlobalAlloc(GMEM_DDESHARE, DataStream.Size);
Data := GlobalLock(DataHandle);
try
DataStream.Position := 0;
DataStream.ReadBuffer(Data^, DataStream.Size);
finally
GlobalUnlock(DataHandle);
end;
Clipboard.Open;
Clipboard.SetAsHandle(ClipboardFormat, DataHandle);
Clipboard.Close;
finally
DataStream.Free;
end;