Einzelnen Beitrag anzeigen

geesmith

Registriert seit: 17. Jan 2003
Ort: Frauenfeld
32 Beiträge
 
Delphi XE5 Architect
 
#1

PNG - Image mit Transparenz in Clipboard

  Alt 27. Mär 2014, 17:30
Hallo zusammen

Leider hat mich meine Suche durch das Internet nicht weitergebracht. Ich versuchs jetzt mal bei den Profis .

Ich erstelle ein Bild vom Typ TPngImage. Dieses Bild beinhaltet einen transparenten Bereich. Nun will ich dieses Bild mit der ganzen Transparenz in die Zwischablage nehmen, um es zB. in Excel einzufügen. Funktioniert ziemlich alles ...nur die Transparenz nimmt er nicht mit.

Wenn ich das PNG speichere, dann speichert er das Bild mit Transparenz. Im Clipboard macht er das nicht. Der ganze Code ist nur testweise, war am rumprobieren. Daher viel Sinn ergibt das bmp->png nicht.

Es gibt eine Methode von TPngImage :SaveToClipboardFormat. Damit komm ich aber wegen KnowHow-Mangel nicht klar. Vielleicht wäre das eine Lösung.

Ausserdem habe ich von einer API-Funktion nahmens "RegisterClipboardFormat" gelsen. Ich konnte sie zwar implementieren, aber es tut sich trotzdem nichts.

Vielen Dank für eure Hilfe!

Delphi-Quellcode:
uses
  pngimage,Clipbrd;

var
  bmp: TBitmap;
  png: TPngImage;
begin
  bmp := TBitmap.Create;
  bmp.SetSize(200,200);

  bmp.Canvas.Brush.Color := clRed;
  bmp.Canvas.Rectangle( 20, 20, 160, 160 );

  bmp.Canvas.Brush.Style := bsClear;
  bmp.Canvas.Rectangle(1, 1, 199, 199);

  bmp.Canvas.Brush.Color := clWhite;
  bmp.Canvas.Pen.Color := clRed;
  bmp.Canvas.TextOut( 35, 20, 'Hello transparent world');

  bmp.TransparentColor := clWhite;
  bmp.Transparent := True;

  png := TPngImage.Create;
  png.Assign( bmp );
  png.SaveToFile( 'C:\test.png' );

  Clipboard.Assign(png);

  bmp.Free;
  png.Free;
end;
  Mit Zitat antworten Zitat