Seite 1 von 2
Transparenntes Gif-Bild auf transparentes Fenster
Verfasst: 03.07.2006 18:06
von Swappy
Ich habe hier gesucht aber nichts brauchbares für mich gefudnen, darum hier meine frage:
Wie Stelle ich in einem Fenster ein animiertes Gif dar, sodas das Fenster nicht zusehen ist und das Gif-Bild transparent ist.
Man sol also lediglich die animation sehen...
wäre schön wenn mir jemand helfen könnte
Verfasst: 05.07.2006 11:07
von AND51
Purebasic kann leider keine GIFs darstellen, es kann ja nicht einmal die transparenz in PNGs unterstützen
Einzig oft besprochene Lösung: GIFs in einem WebGadget darstellen, die eigentliche Darstellung wird dann vom IE übernommen.
Verfasst: 05.07.2006 11:10
von Kaeru Gaman
@AND
das ist so nicht richtig.
PB kann animierte GIFs in mittels PlayMovie darstellen.
der ansatz, den Swappy verfolgt, ist allerdings ein total anderer.
@Swappy
ich schätze mal, du willst so etwas ähnliches wie den Word-Assistenten erstellen.
wie es genau funktioniert ist mir nicht bekannt, aber ich bin mir sicher, dass es kein GIF ist, sondern das von MS bevorzugte AVI.
Verfasst: 05.07.2006 11:53
von bobobo
Ich hab sowas in der Art mal mit der SkinWinLib aus PBOSL
gemacht. Das geht dann sogar mit Ton.
Dafür habe ich dann mehrere Skinwin-Bilder erstellt (dauert etwas)
und die dann in bestimmter Reihenfolge nacheinander mit Tonausgabe
per Hidewindow() und Resizewindow() dargestellt.
Finde dazu leider keinen funktionsfähigen Code mehr.
Verfasst: 05.07.2006 12:41
von Jilocasin
Wie wäre es dann für die Zukunft mit einem "UseGIFImageDecoder()" ?
Oder ist das irgendwie ein geschützes Dateiformat?
Verfasst: 05.07.2006 13:57
von Eric
Laut Wikipedia sind die mit GIF verbundenen Patente inzwischen abgelaufen:
http://de.wikipedia.org/wiki/Gif#GIF_un ... ZW-Patente
Ein ganz anderes Problem dürfte sein, dass GIF-Bilder auch animiert sein können
und zur Darstellung wäre ein zusätzlicher Aufwand notwendig, wobei die
Frage, ob animierte Bilder überhaupt mit dem Image-System von PB
kompatibel sind, offen bleibt.
Verfasst: 05.07.2006 16:40
von Kaeru Gaman
> ob animierte Bilder überhaupt mit dem Image-System von PB
> kompatibel sind, offen bleibt.
die animierten GIFs sind mit keinem Image-system kompatibel.
sie benötigen einen container, der grundsätzlich (auch) auf das darstellen von animationen eingerichtet ist.
das hätte seinen Platz also nicht in PB, sondern in einem Tool, das aus der Anim eine reihe einzelbilder machen kann. (und sowas gibts schon, AniMake z.b.)
ein "UseGIFImageDecoder()" währe nicht das große problem, im zweifel würde nur das erste bild einer animation ins image geladen.
das problem bei LoadAnimatedGIF() wäre, dass man eine vorher nicht bekannte anzahl an frames einladen will.
dazu kommt noch, dass bei vielen GIF-animationen in späteren frames nur teilbilder über den ersten frame gepinselt werden.
man könnte also praktisch ein extra GIF-Anim-Container entwerfen, wenn man das wollte,
und da gibt es bestimmt noch tausende wichtigere dinge, die auf Freds to-do-liste gehören.
nochmal ganz wichtig zum mitschreiben:
Animationen sind keine Images und umgekehrt!
diese frage taucht überall immer mal wieder auf. im c-evo-forum wurde auch schon vorgeschlagen, einfach animierte GIFs zu verwenden, um animationen ins prog einzubaun. aber meistens sind es Laien, die den unterschied nicht raffen, hier im programmiererforum sollte es eigentlich jeder begreifen.
Verfasst: 05.07.2006 17:45
von AND51
Kaeru Gaman hat geschrieben:@AND
das ist so nicht richtig.
PB kann animierte GIFs in mittels PlayMovie darstellen.
Und das sagst du erst jetzt?
Habe ich ja noch nie gehört...
Kann man das Movie auch auf ein Sprite rendern und dieses transparent mit
DisplayTransparentSprite() darstellen?

Verfasst: 05.07.2006 20:49
von MVXA
ich denk ma schon...
Verfasst: 06.07.2006 11:18
von Kaeru Gaman
> Kann man das Movie auch auf ein Sprite rendern und dieses transparent mit DisplayTransparentSprite() darstellen?
Yap, müsste auch nen demo-code bei den examples sein.
(oder war das irgendwo hier im forum? glaub examples)
allerdings ergibt sich fürn "billiges" GIF in nem Movie aufn Sprite rendern ein unverhältnismässiger performance-überhang. da wäre es besser, das Bild vorher in Frames zu splitten und diese konventionell als animiertes sprite zu implementieren.
die Movie-In-Sprite Lösung ist vor allem praktikabel, wenn du umfangreiche AVI animationen hast, die als Sprite-Anims einfach viel zu viel speicher verbraten würden.