Ich habe mir die Gif-Komponenten von
http://finn.mobilixnet.dk/delphi/ heruntereladen und versuche ein animiertes Gif zu erstellen.
Das klappt auch prima, solange die Transparenz ausgeschalten ist. Sobald ich die aber aktiviere, überlagert sich der Text, den ich per canvas.textout auf die einzelnen Frames male, auf mir unerklärliche Weise.
Ein bisschen Code:
Delphi-Quellcode:
GifanimateBegin // anfang des rendervorgangs
gr.Assign(ISource.Bitmap); //gr:TBitMap
GifAnimateAddImage(gr,SBtranscolor.Font.Color,delay); //einmal ohne Text
for i:= 0 to frames -1 do
begin
gr.Assign(ISource.Bitmap); //der hintergrund wird zugewiesen
gr.canvas.brush.style:=bsclear //Fontausgabe transparent - wie ging das nochmal elegant?
gr.Canvas.Font:=EScrollText.Font; //Font einstellen
gr.Canvas.TextOut(gr.Width-progress,Offset,Text); //Ins Bild schreiben
GifAnimateAddImage(gr,SBtranscolor.Font.Color,delay); //Bild wird zum Frame
progress:= progress + pPF;
end;
Im Anhang einmal ohne, einmal mit Transparenz.
Was ich mir überhaupt nicht erklären kann: gr wird jedes mal komplett neu mit dem Hintergrund belegt, und nur einmal mit Text beschrieben - wie kann es da überhaupt zu diesen Überlagerungen kommen? Selbst wenn es Interlaced ist...
[edit=MrSpock]Code auf Wunsch des Erstellers geändert. Mfg, MrSpock[/edit]
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1