![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo alle miteinander!
Ich habe mal wieder ein Problem und bin am verzweifeln. Ich möchte gerne ein Bild „animieren“, damit es so aussieht als ob es sich dreht. Dazu habe ich vier einzelne Bilder angefertigt, die ich dann nach und nach anzeige. Das funktioniert auch so weit ganz gut... Nun habe ich aber das Problem, dass die EXE-Datei im Speicher mit der Zeit immer größer und größer wird, bis ein Fehler auftritt (leider ohne Fehlercode) und die EXE-Datei abgebrochen wird. Ich habe schon versucht das Bild mit „DrawPic“ zu laden und mittlerweile habe ich es auch mit einer Statik probiert, leider ohne Erfolg. Anbei ein Link mit einen kleinen Test-Progi dazu. http://www.pcfilter.de/Hallo1001/Temp/Test.rar Kann mir jemand einen Tipp geben wie ich das Problem am einfachsten lösen könnte (ohne dass ich mich mit der Open-GL Funktion von X-Profan befassen muss)? Danke im Voraus... LG Jens |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 19.02.2008
Ort: Velbert
Beiträge: 1.726
|
Hi Hallo 1001,
das kannst du in einem Grafikprogramm ereichen, indem du deine vier Einzelbilder in einer animierten GIF-Grafik zusammenfasst. Das GIF-Format beherrscht es, mehrere Grafinken hintereinander anzuzeigen, sie sozusagen scheinbar "abzuspielen". Hier ein Beispiel: Gruß, Tunarus
__________________
http://www.stoeberbox.de |
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Warum wird deine Exe immer größer? Ich denke, deine verwendete Technik ist irgendwie nicht ideal. Hast du schonmal mit der ProSpeed rumprobiert?
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#4 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
|
Hm...gibst Du am Ende auch immer brav alle Bereiche frei ('dispose')? Und wartest du dann ein wenig, daß das Betriebssystem auch Zeit hat, das wirklich zu tun? War mal bei meinem alten langsamen Rechner das Problem...
Gruss
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
#5 (Direktlink) | |||||
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo!
@ Tunarus Zitat:
Jo, das habe ich als erstes probiert und das hat auch wunderbar mit einer GIF-Datei funktioniert. Leider bewegt sich aber bei der GIF-Datei nichts mehr wenn man sie in X-Profan mit „DrawPic“ lädt... Wenn das doch funktionieren sollte, wie stellt man das an? @ Frabbing Zitat:
Neeee, nicht die EXE-Datei wird immer größer, sondern der Bedarf an Speicherplatz im Speichr (zu sehen im Task-Manager unter Prozesse). Nach einer Zeit X ist hier der Speicherbedarf drastisch angestiegen und dann wird ohne Vorwarnung die EXE-Datei geschlossen/abgebrochen... Zitat:
Das denke ich auch, nur wie macht man es richtig? Zitat:
Nein, die habe ich mir noch nicht angeschaut. Wenn alle Strick reißen sollten werde ich das aber machen... @ p. specht Zitat:
Ich habe gar keine Bereiche mit DIM erstellt, die ich wieder freigeben müsste. Im Prinzip Lade ich nur immer hintereinander vier Bilder mit „DrawPic“ mehr nicht. Im Link von gestern (siehe weiter oben) habe ich das Progi hinterlegt, damit man nachvollziehen kann was ich da mache. Im Moment versuche ich es mit „Create("BITMAP"...)“, das funktioniert schon besser, aber der Speicherbedarf wächst immer noch an (bis jetzt kam es aber noch nicht zum Programm Abbruch)... LG Jens |
|||||
|
|
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Auf jeden Fall die Bildhandle wieder freigeben, wenn sie nicht mehr benötigt werden. Ansonsten kann ja nicht viel schiefgehen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#7 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Für animierte GIFs brauchst du eine spezielle DLL, wie zum Beispiel die von AMPSoft.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#8 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Oder eine AVI. Eine mit Lüfter habe ich nicht. Ein kleines Beispiel auf die Schnelle, dass aber noch hinkt.
Da der Code hier wegen mehr als 6000 Zeichen nicht reingeht ist er auf Animation Avi - XProfan Forum Community Gruß Thomas Geändert von THFR (10.09.2010 um 23:50 Uhr) |
|
|
|
|
|
#9 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
@ THFR
Danke Thomas für den Code. Die Idee mit dem AVI-Video ist ja mal richtig genial. Ich glaube das bringt mich glatt 200% nach vorne... ![]() LG Jens |
|
|
|
|
|
#10 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
|
Wer die Bild-DLL von AmpSoft sucht: Ist nicht ganz einfach zu finden:
Miscellaneous utilities: Tiny Image Viewer - AMPsoft. Google spinnt leider ein bisschen...
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 |
|
|
|
|
|
|
#11 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Geht auch mit GDI-PLUS. Siehe: http://www.ampsoft.eu/
Code:
'##########################################################################
'Testprogramm für GDI-PLUS
'Anzeigen:
'animierte Gif's
'##########################################################################
'Andreas Miethe * Februar 2003
'##########################################################################
'Ausführliche Dokumentation in P-SDK von Microsoft
'GDIPlus ist nur in Windows-XP fest eingebaut, für alle
'die GDIPlus auch auf anderen Windows-Systemen
'anwenden wollen, gibt es auf der Microsoft-Homepage
'ein SDK-Update.
'http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm
'##########################################################################
'##########################################################################
'Bemerkung :
'Eigentlich sollte die Gifanimation in einer Endlosschleife und in einem
'eigenen Thread laufen.
'Es waere also sinnvoll aus dem Quellcode eine Prc zu machen und diese
'dann mit CreateProcess aufzurufen und mit TerminateProcess
'wieder zu beenden.
'Es ist ja durchaus möglich bei CreateProcess mit Parametern zu starten.
'Es könnte das z.B der Filename und die Position sowie das Fensterhandle
'übergeben werden.
'##########################################################################
cls
$H windows.ph
$H includes\\Functions_GDIPLUS.ph
$H includes\\GDIP_Imageging.ph
$I includes\\GDIP_Helper.inc
DEF &PropertyTagFrameDelay $5100
Declare GUID#
Dim GUID#,16
Declare gdiplusToken&,ImageObject&,GraphicObject&
Declare Count&,ItemSize&
Declare PropertyArray#
Declare ItemValues&
Declare Ende&,I&
SetTrueColor 1
CLS ~GetSysColor(~COLOR_3DFACE)
InitGDIPlus'GDIPlus starten
gdiplusToken& = @&(0)
'Bild laden
ImageObject& = gdipLoadImage("ventilator1.GIF") 'Pfad und GIF anpassen
If ImageObject&
'und auf %hWND
~GdipCreateFromHWND(%hWnd,ADDR(GraphicObject&))'alle Graphics-Operationen auf %hWnd
'Anzahl der Einzelbilder ermitteln
~GdipImageGetFrameDimensionsList(ImageObject&,GUID#,1)
~GdipImageGetFrameCount(ImageObject&,GUID#,ADDR(Count&))'Anzahl der Einzelbilder steht in COUNT&
'Pausen zwischen den Einzelbildern ermitteln. Die Pausenlänge zwischen den Einzelbidern
'kann durchaus variieren
'Platzbedarf für PausenArray ermitteln
~GdipGetPropertyItemSize(ImageObject&,&PropertyTagFrameDelay,Addr(ItemSize&))'Platzbedarf steht in ItemSize&
Dim PropertyArray#,ItemSize&
'PausenArray ermitteln
~GdipGetPropertyItem(ImageObject&,&PropertyTagFrameDelay,ItemSize&,PropertyArray#)
'Pointer auf Array von Pausen zwischen den Einzelbildern
ItemValues& = Long(PropertyArray#,12)
Whilenot Ende&
Whilenot I& = Count&
~GdipImageSelectActiveFrame(ImageObject&,GUID#,I&)'Frame auswählen
~GdipDrawImageI(GraphicObject&,ImageObject&,120,10)'Frame zeichnen
Sleep Byte(ItemValues&,I&*4)*10'Pause zwischen den Einzelbildern
I& = I& + 1
Endwhile
I& = 0
EndWhile
Endif
End
|
|
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Oder ein animiertes Sprite mit der Prospeed.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#13 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo!
Ich habe mein Programm jetzt komplett auf die Videos umgestellt, funktioniert bis lang ohne Probleme... Danke noch mal für die schnelle Hilfe... LG Jens |
|
|
|
|
|
#14 (Direktlink) |
|
Stammuser
![]() Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
|
Hallo Jens, ändere mal den Code in diesem Teil um, das müßte den Start beschleunigen:
Code:
down1&=Control("SysAnimate32","",$50080004,50,10,1,1,%hwnd,0,%hinstance,$100)
ShowWindow(down1&,0)
down2&=Control("SysAnimate32","",$50080004,150,10,1,1,%hwnd,0,%hinstance,$100)
ShowWindow(down2&,0)
While 1
case %key=2:BREAK
WaitInput
If GetFocus(ein1&)
ShowWindow(down1&,1)
sendmessage(down1&,1124,0,avi#)
ElseIf GetFocus(aus1&)
ShowWindow(down1&,0)
ElseIf GetFocus(ein2&)
ShowWindow(down2&,1)
sendmessage(down2&,1124,0,avi#)
ElseIf GetFocus(aus2&)
ShowWindow(down2&,0)
EndIf
wend
|
|
|
|
|
|
#15 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo Thomas!
Danke für die Änderungen, jetzt funktioniert es super... LG Jens |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Objekte (Bilder) mit der Maus bewegen | horsthorn | XProfan | 16 | 17.02.2010 12:17 |
| element bewegen mit quellcode? | mi | Visual Basic, Visual Basic.NET | 1 | 25.07.2005 10:46 |
| PC m. neues Asusmainboard nicht zum laufen zu bewegen | Setter | Hardware - Problemlösungen | 2 | 23.02.2004 17:47 |
| Suche Programm um Bilder zu bewegen. | Neruh | Software - Allgemein | 1 | 12.01.2004 13:01 |
| Icons auf der festplatte bewegen sich | Kirana | Office-Anwendungen | 1 | 16.06.2002 16:25 |