Einzelnen Beitrag anzeigen

Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
508 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: [Firemonkey] Canvas als PNG mit Transparenz speichern

  Alt 11. Apr 2016, 22:47
Dein Code zeichnet auf das Canvas vom Formular und nicht auf das vom Bitmap, oder?
Sicher? Weil das gezeichnete Rectangle startet genau dort wo auch das TImage ist und wenn ich den Code so schreibe ändert sich das Ergebnis leider auch nicht :/

Delphi-Quellcode:
procedure TForm1.Image1Paint(Sender: TObject; Canvas: TCanvas;
  const [Ref] ARect: TRectF);
begin
  Image1.Canvas.Fill.Color := $ffff0000;
  Image1.Canvas.FillRect(RectF(0,0,50,50),0,0,[],1);
end;
Was ich noch versucht habe ist:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  LBitmap : TBitmap;
begin
  LBitmap := TBitmap.Create;
  LBitmap.Width := Image1.Bitmap.Width;
  LBitmap.Height := Image1.Bitmap.Height;

  Image1.Canvas.CopyBitmap(Image1.Bitmap, LBitmap);

  LBitmap.SaveToFile('./tmp.bmp');
end;

procedure TForm1.Image1Paint(Sender: TObject; Canvas: TCanvas;
  const [Ref] ARect: TRectF);
begin
  Image1.Bitmap.Width := round(Image1.Width);
  Image1.Bitmap.Height := round(Image1.Height);
  Canvas.Fill.Color := $ffff0000;
  Canvas.FillRect(RectF(0,0,50,50),0,0,[],1);
end;
Das speichert mir keine leere Datei mehr (also 0 bytes) sondern eine Datei die zwar 100x100 hat aber einfach nur schwarz ist und keinerlei Spuren der gezeichneten Dinge enthält.

Das kann doch nicht so schwer sein, irgendwo muss da ein Wurm oder Denkfehler drin sein auch wenn ich beim besten Willen nicht sehe wo der ist :/

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat