Hallo Haegar
probier mal die
API-Funktion BitBlt.
Der Aufruf müsste ungefähr so gehen:
BitBlt(Canvas.Handle, Canvas.Left, Canvas.Top, Image.Width, Image.Heigth, Image.Handle, altx, alty, SCRINVERT);
Canvas ist in dem Fall die Zeichenfläche auf die du zeichnen willst, altx und alty sind die alten Koordinaten. Der Parameter SCRINVERT sorgt für einen XORPut. Wenn du das Bild mit der Funktion auf den Hintergrund kopiert hast, dann müsste beim zweiten mal drüberkopieren wieder das ursprüngliche Hintergrundbild rauskommen