Wenn du auf Image1.Picture.Bitmap zugreifst und Picture.Graphic keine TBitmap-Instantz ist, dann wird dort ein TBitmap erstellt und das "alte" Bild (die alte TGrafic-Instanz) gelöscht.
Dabei wird aber der Bildinhalt nicht kopiert (leider).
*1
Nimm also Image1.Picture.Graphic zum Auslesen.
Falls das nicht geht, dann eben manuell:
Delphi-Quellcode:
mybitmap.Width := Image1.Picture.Width;
mybitmap.Height := Image1.Picture.Height;
mybitmap.Canvas.Draw(0, 0, Image1.Picture.Graphic);
[add]
*1)
Wobei du dieses hättest auch selber rausbekommen können.
Du hast ja schließlich nicht umsonst die
VCL-Quellcodes mitgeliefert bekommen ... da kann man also auch mal nachsehn, was wo passiert und warum es nicht funktionieren mag.
Delphi-Quellcode:
procedure TPicture.ForceType(GraphicType: TGraphicClass);
begin
if not (Graphic is GraphicType) then
begin
FGraphic.Free; // warum die aber kein FreeAndNil verwenden, ist mir unklar
FGraphic := nil;
FGraphic := GraphicType.Create;
...
end;
end;
function TPicture.GetBitmap: TBitmap;
begin
ForceType(TBitmap);
Result := TBitmap(Graphic);
end;
property Bitmap: TBitmap read GetBitmap write SetBitmap;