Zitat von
Desmulator:
ich würde es aber gerne so nutzen
GameScreen.Canvas.Draw(StaticObject.PosX,StaticObject.PosY,StaticObject.Appear());
TStaticObject.Appear() gibt eine Bitmap zurück die ich auf GameScreen zeichen will...
Dann musst du mit dem Speicherleck leben. Grundsätzlich gibt man Objekte auf der Ebene frei, wo sie angelegt wurden. Da du das Objekt aber zurück geben willst, kannst du das nicht machen. Also entweder zusätzliche Bitmap oder Speicherleck.
Anderer Vorschlag: Warum nicht so?
StaticObject.DrawAppear(GameScreen.Canvas);
Schliesslich hat StaticObject PosX, PosY und das Bitmap...
Nachtrag zu deiner Lösung: (freigeben fehlte, try/finally nur Sicherheit)
Delphi-Quellcode:
TStaticObject.Appear(TempBmp);
try
GameScreen.Canvas.Draw(StaticObject.PosX,StaticObject.PosY,TempBmp); //Das finde ich is doof
finally
TempBmp.Free;
end;