Assign kopiert
nicht den Bildinhalt.
Es kopiert nur die Referenz auf das interne TBitmapImage und die Eigenschaften Transparent, TransparentColor, TransparentMode, PixelFormat und AlphaFormat.
Vor allem bei Multithread oder wenn in den Bitmaps nachher noch was geändert wird, dann können schon komische Dinge rauskommen.
Delphi-Quellcode:
TBitmapImage =
class(TSharedImage)
private
FHandle: HBITMAP;
// DDB or DIB handle, used for drawing
FMaskHandle: HBITMAP;
// DDB handle
FPalette: HPALETTE;
FDIBHandle: HBITMAP;
// DIB handle corresponding to TDIBSection
FDIB: TDIBSection;
FSaveStream: TMemoryStream;
// Save original RLE stream until image is modified
FHalftone: Boolean;
// FPalette is halftone; don't write to file
...
end;
Bei Draw, CopyRect und Dergleichen passiert sowas nicht, da dort nur der Bildinhalt kopiert wird, aber der Rest nicht.