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