Ich würde das Zeichnen des Backgrounds in eine eigene Procedure auslagern und dann aus Paint aufrufen.
Du kannst auch jede Menge redundanten Code eliminieren!
Delphi-Quellcode:
procedure TScrollingCredits.PaintBackground;
begin
...
if (FBackgroundImage.Graphic <> nil) and (not FBackgroundImage.Graphic.Empty) then
begin
// kein Hintergrund
Canvas.FillRect(Rect(0, 0, Width, Height));
Exit; // und fertig
end;
// besser case anstelle von 5 IF abfragen
case FBackgroundAlign of
alclient:
...
end;
end;
Das Gleiche gilt auch für den Vordergrund.
Im Code steht:
Delphi-Quellcode:
if FForegroundAlign = alclient Then
Begin
....
End;
if FForegroundAlign = altop Then
begin
...
end;
Da sind mehrere IF-Abfragen, die sich gegenseitig ausschliesen.
==> CASE FForegroundAlign OF verwenden.