Seite 1 von 1

animiert gif für purebasic-fenster - der einfachste weg ...

Verfasst: 24.02.2006 13:57
von bingo
Bild :allright:

ganz einfach ... (wenn man weiss wie's geht)

grundlage... (so 'ne art mini-webgadget)

Code: Alles auswählen

Procedure.l Ansi2Uni(ansi.s) ;short way to unicode
SHStrDup_(@ansi,@memtarget)
ProcedureReturn memtarget
EndProcedure

OpenLibrary(0, "ATL.dll")
CallFunction(0,"AtlAxWinInit") 
OpenWindow(0, 100, 100, 200, 90, #PB_Window_SystemMenu, "einfach... pb-anigif!") 
handle = CreateWindowEx_(0,"AtlAxWin","res://" + GetFilePart(ProgramName()) + "/ani.htm",#WS_VISIBLE|#WS_CHILD|#WS_DISABLED ,5,5,60,54,WindowID(0),0,GetModuleHandle_(0),0) 
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
CloseWindow(0)
CloseLibrary(0)
End 
die idee besteht nun darin , ALLES aus der resource zu übergeben . in der resource liegt die animierte gif (kann im prinzip auch png oder jpg sein) . wichtig ist hier zusätzlich ein mini-html-file , was das image dann für den "angezapften" webrowser richtig positioniert :

<HTML>
<BODY scroll='no' leftmargin='0' topmargin='0'>
<img src="win.gif">
</BODY>
</HTML>


... damit liegt alles im richtigen rahmen !

hier alles komplett zum download ---> http://kyf.net/tmp/anigif.zip

Verfasst: 24.02.2006 14:26
von AND51
Kompliment! Du hast sogar an MARGIN gedacht!
Aber wie bekomme ich Transparenz hin?

Da hilft wohl höchstens die Mini-HTML erweitern, auf bgcolor="FARBE" hin parsen und FARBE druch einen übergebenen, hexadezimalen Wert austauschen. Könnte dann antürlich auch ein Wort sein, z. B. RED statt #FF0000, BLUE statt #0000FF, usw.

Aber selbst wenn: das wäre dann imemr noch keine echte Tranzparenz, weil ich durch das Webgadget nicht hindurchsehen kann. Sondern es würde ja nur eine "halbe Tranzparenz" vorgegaukelt.

Trotzdem Kompliment!

Verfasst: 24.02.2006 15:22
von bingo
mit echter transparenz - das wird mit html nix ... ansonsten ist fast alles möglich !

die einzige möglichkeit eine animation MIT transparenz laufen zu lassen , geht über avi (CreateWindowEx und "SysAnimate32") wobei 0,255,255 ("das hässliche grün/blau") den transparenten farbteil ausmacht . das gleiche prinzip wie bei den win-animationen .

CreateWindowEx_(0,"SysAnimate32","",#ACS_CENTER|#WS_CHILD|#WS_VISIBLE|#ACS_AUTOPLAY|#ACS_TRANSPARENT,5,5,60,54,WindowID(0),0,GetModuleHandle_(0),0)

Bild

-- nachtrag 26.02./20.00 --

bgcolor=threedface .... macht den fensterhintergrund zum html-hintergrund

<HTML>
<BODY bgcolor=threedface scroll='no' leftmargin='0' topmargin='0'>
<img src="win.gif">
</BODY>
</HTML>


wenn win.gif eine transparenz hat , erscheint dort die fensterfarbe ! (klappt nicht , wenn da ein brush d'raufliegt ! dort liegt dann nicht die brush-farbe , sondern ebenfalls die fensterfarbe !)

echte transparenz für [ani-]gif :allright:

<HTML>
<BODY bgcolor=transparent scroll='no' leftmargin='0' topmargin='0'>
<img src="win.gif">
</BODY>
</HTML>



... wenn man sich die in den win-dll's versteckten html-resourcen anschaut , kommt man schon darauf , was alles auf diese weise möglich ist :shock: