HI,
Zitat von
Fussball-Robby:
Zitat von
DeddyH:
Dafür ist das OnPaint-Ereignis ja auch da. Beim TImage dürfte das übrigens auch passieren, wenn man keine Grafik lädt, sondern direkt auf den Canvas pinselt (und zwar nicht im OnPaint).
Nein, da bleibt das gepinselte da. Warum auch immer..
Ganz einfach: Wenn du auf ein Image mit Canvas zeichnest, wird, falls noch nicht vorhanden, ein
TBitmap angelegt, auf welches jede Canvas-aktion
weitergeleitet wird. (Deswegen auch Probleme beim Zeichnen mit Canvas auf JPEG)
Delphi-Quellcode:
function TImage.GetCanvas: TCanvas;
var
Bitmap: TBitmap;
begin
if Picture.Graphic = nil then
begin
Bitmap := TBitmap.Create;
try
Bitmap.Width := Width;
Bitmap.Height := Height;
Picture.Graphic := Bitmap;
finally
Bitmap.Free;
end;
end;
if Picture.Graphic is TBitmap then
Result := TBitmap(Picture.Graphic).Canvas
else
raise EInvalidOperation.Create(SImageCanvasNeedsBitmap);
end;
Deswegen bleibt der Inhalt erhalten. Bei einer Paintbox gibts keine Graphik. Hier wird alles (wirklich alles) über OnPaint gezeichnet. Deswegen verschwindet der Inhalt auch so schnell.
rollstuhlfahrer
PS: @Delphiturbo: Such dir raus, was du willst/brauchst