Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Bitmap Fade in and out Problem

  Alt 17. Sep 2007, 08:53
Deine Funktionen sind etwas zu speziell und daher ungeeignet um sie so einfach in ein beliebiges Projekt einzubinden.
Mein Vorschlag:
du brauchst eine Funktion, die 2 gleichgrosse Bitmaps entgegennimmt und über den Parameter "blend",
auf ein 3. Ausgabebitmap kopiert.
procedure BlendBitmap(BitmapA, BitmapB:TBitmap; bitmapOut:TBitmap; blend:double=0.5); Bei Blend = 0.0 wird nur BitmapA -> bitmapOut kopiert.
Bei Blend = 1.0 wird nur Bitmapb -> bitmapOut kopiert.

In deinem Fall wird ja von einem schwarzen Bitmap auf das Bitmap eingeblendet (Fade In).
Umgekehrt wäre es ein Fade Out.
Mit der BlendBitmap Prozedure kannst du diese Effekte ebenfalls erreichen, weil du zwei
völlig beliebige Bilder (eines davon kann auch komplett schwarz sein) überblenden kannst.
Weitere Vorteil: mit BlendBitmap kannst du die Anzahl der Abstufungen völlig frei selber wählen.
In deinen Funktionen sind es 32 Stufen.
Ausserdem ist in FadeOut ein Fehler:
Delphi-Quellcode:
for step := 32 downto 0 do
    ...
    Row[x].rgbtRed := (step * BaseRow[x].rgbtRed) shr 8; // richtig wäre shr 5;
    Row[x].rgbtGreen := (step * BaseRow[x].rgbtGreen) shr 8; // weil 2 ^ 5 = 32
    Row[x].rgbtBlue := (step * BaseRow[x].rgbtBlue) shr 8;
Andreas
  Mit Zitat antworten Zitat