Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: transparentes bild über form legen und hin und her blend

  Alt 25. Okt 2005, 17:14
Gut, das fällt unter Vermutung zwei . Du brauchst einen Alpha-Wert (Byte), den du in einem Timer immer zwischen 255 und 0 pendeln lässt. Das Logo hast du in einem TBitmap(32), dieses blendest du mit dem Hintergrund auf ein TImage(32).
Drei Ansätze zum Blenden:
- TCanvas.Pixels (langsam)
- TBitmap.Scanline (Pointer )
- GR32

Pseudocode für 1 und 2:
RGB(Image) = RGB(Bitmap) * Alpha + RGB(Background) * (255 - Alpha) Nummer drei benötigt etwas Einarbeitung in die Lib, dafür wirds dann ziemlich schnell (vom Code und der Ausführung):
Delphi-Quellcode:
for i := 0 to Image.Height * Image.Width -1 do
  Image.Bits[i] := BlendReg(Alpha shl 24, Bit.Bits[i]);
EMMS;
oder auch
Delphi-Quellcode:
// Bit.DrawMode = dmBlend
Image.Bitmap.Clear(Alpha shl 24);
Image.Bitmap.Draw(0, 0, Bit);

[edit]Zuu langsam . Passt trotzdem. [/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat