Okay on further searching and a little testing, these seem to maintain transparency between applications.
Copy
var
bmp : TBitmap;
begin
// This seems to copy transparency
if assigned(BgraView) then
begin
bmp := TBitmap.create;
try
bmp := BgraView.MakeBitmapCopy(clNone, false);
Clipboard.Open;
CLipboard.Assign(bmp);
clipboard.Close;
finally
bmp.free;
end;
end;
end;
Paste
procedure TframeImageViewer.actIVPasteExecute(Sender: TObject);
var
bmp : TBitmap;
begin
// WIP
if Clipboard.HasPictureFormat then
begin
bmp := tbitmap.Create;
try
bmp.Assign(Clipboard);
if not assigned(BgraView) then BgraView := TBgraBitmap.create(0,0, BGRAPixelTransparent);
try
BgraView.SetSize(bmp.width, bmp.height);
BgraView.Canvas.Draw(0, 0, bmp);
rst.x := bgraView.width;
rst.y := bgraView.Height;
pnlImage.Repaint;
except
//
end;
finally
bmp.free;
end;
end;
end;
Now obviously those are from my app, but could easily be changed. I thought I would offer them here for those also looking for a solution to this.