![]() |
Image fade in?
Hi....das man eine Form mit Alphablend und Timer einblenden lassen kann ist ja bekannt....hab mich etwas im internet durch gesucht und wollte das gleiche mit einem geladenen image machen....hab jedoch keine lösung gefunden....was ich gefunden hab sind wege wie man ein image zwar einfaden lassen kann, jedoch wird das image dann erst geladen also von außen....drumm wollt ich fragen wie man ein image was mit Timage halt auf meiner form liegt in einer bestimmten zeit einfaden lassen kann?
|
Re: Image fade in?
Zitat:
was meinst du denn genau? Ich meine hier insbesondere was du unter "dann erst geladen von außen" verstehst. Du solltest das Image natürlich mindestens einmal laden. Dann suchst du einfach mal nach Transparenz und Bitmap und das wendest du auf das geladene Bitmap an. Mittels eines Timers senkst du die Transparenz immer weiter ab und mit z.B. BitBlt kannst du die veränderte Bitmap immer wieder zeichnen (im OnTimer-Ereignis). Gruß Der Unwissende |
Re: Image fade in?
Delphi-Quellcode:
procedure FadeIn(ImageFileName: TFileName);
var Bitmap, BaseBitmap: TBitmap; Row, BaseRow: PRGBTripleArray; x, y, step: integer; begin // Bitmaps vorbereiten / Preparing the Bitmap // Bitmap := TBitmap.Create; try Bitmap.PixelFormat := pf32bit; // oder pf24bit / or pf24bit // Bitmap.LoadFromFile(ImageFileName); BaseBitmap := TBitmap.Create; try BaseBitmap.PixelFormat := pf32bit; BaseBitmap.Assign(Bitmap); // Fading // for step := 0 to 32 do begin for y := 0 to (Bitmap.Height - 1) do begin BaseRow := BaseBitmap.Scanline[y]; // Farben vom Endbild holen / Getting colors from final image // Row := Bitmap.Scanline[y]; // Farben vom aktuellen Bild / Colors from the image as it is now // for x := 0 to (Bitmap.Width - 1) do begin Row[x].rgbtRed := (step * BaseRow[x].rgbtRed) shr 5; Row[x].rgbtGreen := (step * BaseRow[x].rgbtGreen) shr 5; // Fading // Row[x].rgbtBlue := (step * BaseRow[x].rgbtBlue) shr 5; end; end; Form1.Canvas.Draw(0, 0, Bitmap); // neues Bild ausgeben / Output new image // InvalidateRect(Form1.Handle, nil, False); // Fenster neu zeichnen / Redraw window // RedrawWindow(Form1.Handle, nil, 0, RDW_UPDATENOW); end; finally BaseBitmap.Free; end; finally Bitmap.Free; end; end; ![]() Das mein ich damit. Aber ich habe ja mein image bereits in meiner Anwendung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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 by Thomas Breitkreuz