Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Image Fade In (https://www.delphipraxis.net/82420-image-fade.html)

Kage 12. Dez 2006 21:13


Image Fade In
 
Nun, ich habe zwar ein Fade Out gefunden nicht aber ein Fade In. Natürlich ist es für die einen unter euch keine Sache sowas kurz umzuschreiben, aber ich krieg einfach nicht raus, was ich ändern muss um aus dem Fade Out ein Fade In zu kriegen.

Also, hier der Fade Out Code:
Delphi-Quellcode:
  procedure FadeIn(const BMP:TImage; Pause:integer) ;
   var
    BytesPorScan : integer;
    w,h : integer;
    p : pByteArray;
    counter : integer;

   begin
      {This only works with 24 or 32 bits bitmaps}
      If Not (BMP.Picture.Bitmap.PixelFormat
              in [pf24Bit, pf32Bit])
       then raise exception.create
          ('Error, bitmap format not supported.') ;

      try
       BytesPorScan:=
        Abs(Integer(BMP.Picture.Bitmap.ScanLine[1])-
            Integer(BMP.Picture.Bitmap.ScanLine[0])) ;
      except
        raise exception.create('Error') ;
      end;

      {Increase the RGB for each single pixel}
      for counter:=1 to 256 do
      begin
        for h:=0 to BMP.Picture.Bitmap.Height-1 do
        begin
          P:=BMP.Picture.Bitmap.ScanLine[h];
          for w:=0 to BytesPorScan-1 do
            if P^[w] > 0 then P^[w]:=P^[w]+1;
        end;
        Sleep(Pause);
        BMP.Refresh;
      end;
    end; {procedure FadeIn}
Schon im voraus ein Danke an denjenigen/diejenige, der/die mir das kurz umschreibt.

P.S.: Und nein, mit der SuFu fand ich kein Fade In :D

Sunlight7 12. Dez 2006 22:12

Re: Image Fade In
 
Hallo!

Suchfunktion benutzen :wink:
Zitat:

Zitat von Kage
P.S.: Und nein, mit der SuFu fand ich kein Fade In :D

Ähm, dann Suchfunktion richtig benutzen: Hier im Forum suchenFade In, Hier im Forum suchenFade
Fullscreen SlideShow Bilder animieren stand in beiden Fällen in den Ergebnissen auf Platz 3... :lol:

Grüßle!

Edit: Oder hier: Image fade in?, steht sogar im Titel...

Kage 13. Dez 2006 11:29

Re: Image Fade In
 
Oh man, ich glaube ich brauche wirklich ma ne neue Brille wenn ich sogar das schon überseh oO
Habs jetzt auch so hingekriegt, wie ich wollte (glaub ich zumindest ^^).

Danke dir

[edit]Ok, alles hat funktioniert, aber es gefällt mir nicht (zugegeben, ich bin manchmal sehr wählerisch). Was mir viel mehr gefallen hat is wie beim obigen Code, wenn man "P^[w]:=P^[w]+1" statt (wie im Code woher ich das ganze habe) "P^[w]:=P^[w]-1" verwendet. Wäre also dennoch nett, wenn mir einfach wer den obigen Code kurz umschreiben könnte :stupid: [/edit]

Muetze1 13. Dez 2006 12:05

Re: Image Fade In
 
Zitat:

Zitat von Kage
Ok, alles hat funktioniert, aber es gefällt mir nicht (zugegeben, ich bin manchmal sehr wählerisch). Was mir viel mehr gefallen hat is wie beim obigen Code, wenn man "P^[w]:=P^[w]+1" statt (wie im Code woher ich das ganze habe) "P^[w]:=P^[w]-1" verwendet. Wäre also dennoch nett, wenn mir einfach wer den obigen Code kurz umschreiben könnte :stupid:

Nö, aber ich kann dir sagen, was du umschreiben müsstest. Dass er dort die Pixeldaten verändert ist dir ja nun schon klar. Dass du nun statt + - nehmen musst, ist dir auch klar. Daher sage ich dir worauf du achten musst: Dekrementiere nur so lange, bis du den Originalwert erreicht hast.

Kage 13. Dez 2006 12:13

Re: Image Fade In
 
Zitat:

Zitat von Muetze1
Nö, aber ich kann dir sagen, was du umschreiben müsstest. Dass er dort die Pixeldaten verändert ist dir ja nun schon klar. Dass du nun statt + - nehmen musst, ist dir auch klar. Daher sage ich dir worauf du achten musst: Dekrementiere nur so lange, bis du den Originalwert erreicht hast.

Ok, jetzt müsste ich noch wissen wie man dekrementiert, hab da keine Ahnung von, leider. Wär nett, wenn du das noch kurz umformulieren könntest für einen, der nur Bahnhof versteht ^^"

[edit]Ich glaube, ich weiss nun, was du meinst, und wie ungefähr ich das bewerkstelligen muss. Danke fürs auf die Fährte bringen, hoffentlich klappts jetzt ;)[/edit]

Muetze1 13. Dez 2006 12:58

Re: Image Fade In
 
dekrementieren = verrigner.
inkrementieren = erhöhen.

Letzteres hatte der Code gemacht (+ 1)
Ersteres muss der Code nun machen (- 1)

Und Originalwert = der Wert an der Stelle im Originalbild. Du musst nun von 255 immer so lange 1 abziehen, bis du den Wert erreicht hast, den das Bild original an der selben Stelle hat.

Kage 13. Dez 2006 13:09

Re: Image Fade In
 
Also zu Deutsch ich muss per Schleife von 255 auf 0 zählen und bei jedem Durchgang prüfen ob der momentane Wert = dem Originalwert ist. Wenn das der Fall ist soll er den Wert verringern. Ok, soweit klar. Aber ist der Originalwert P^[W] oder wie les ich den aus? (Ich weiss, manchmal dauerts ziemlich lange, bis ich etwas wirklich begriffen habe, dafür kann ichs nachher noch sehr lange)

Muetze1 13. Dez 2006 16:15

Re: Image Fade In
 
Zitat:

Zitat von Kage
Wenn das der Fall ist soll er den Wert verringern.

Falsch! Wenn der Originalwert erreicht ist, nicht weiter verringern, da du den originalen Wert erhalten hast...

Zitat:

Zitat von Kage
Aber ist der Originalwert P^[W] oder wie les ich den aus?

P kommt doch von BMP.Picture.Bitmap.ScanLine[h] und das ist doch von dem (aktuell) schwarzen Bild und nicht dem Originalbild, oder? Somit musst du dir wohl zusätzlich von dem Originalen Bild auch was von dessen ScanLine[] holen (an der selben Stelle) und dann vergleichen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz