Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07.08.2010, 20:31   #1 (Direktlink)
Ist öfter hier
 
Benutzerbild von Hallo1001
 
Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
Standard Bilder bewegen - wie?

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
Hallo1001 ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 08.08.2010, 11:29   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Tunarus
 
Registriert seit: 19.02.2008
Ort: Velbert
Beiträge: 1.726
Standard

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
Tunarus ist gerade online   Mit Zitat antworten
Alt 08.08.2010, 12:28   #3 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

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.
Frabbing ist offline   Mit Zitat antworten
Alt 08.08.2010, 15:29   #4 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
Standard

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
p. specht ist gerade online   Mit Zitat antworten
Alt 08.08.2010, 16:36   #5 (Direktlink)
Ist öfter hier
 
Benutzerbild von Hallo1001
 
Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
Standard

Hallo!

@ Tunarus

Zitat:
das kannst du in einem Grafikprogramm ereichen, indem du deine vier Einzelbilder in einer animierten GIF-Grafik zusammenfasst.

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:
Warum wird deine Exe immer größer?

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:
Ich denke, deine verwendete Technik ist irgendwie nicht ideal.

Das denke ich auch, nur wie macht man es richtig?

Zitat:
Hast du schonmal mit der ProSpeed rumprobiert?

Nein, die habe ich mir noch nicht angeschaut. Wenn alle Strick reißen sollten werde ich das aber machen...

@ p. specht

Zitat:
Hm...gibst Du am Ende auch immer brav alle Bereiche frei ('dispose')?

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

Hallo1001 ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 08.08.2010, 16:48   #6 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

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.
Frabbing ist offline   Mit Zitat antworten
Alt 08.08.2010, 17:15   #7 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

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
Jac de Lad ist offline   Mit Zitat antworten
Alt 08.08.2010, 20:50   #8 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

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)
THFR ist offline   Mit Zitat antworten
Alt 08.08.2010, 21:51   #9 (Direktlink)
Ist öfter hier
 
Benutzerbild von Hallo1001
 
Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
Standard

@ 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
Hallo1001 ist offline   Mit Zitat antworten
Alt 08.08.2010, 23:14   #10 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.082
Standard

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
p. specht ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 09.08.2010, 00:24   #11 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

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
Gruß Thomas
THFR ist offline   Mit Zitat antworten
Alt 09.08.2010, 08:23   #12 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Oder ein animiertes Sprite mit der Prospeed.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 09.08.2010, 22:56   #13 (Direktlink)
Ist öfter hier
 
Benutzerbild von Hallo1001
 
Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
Standard

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
Hallo1001 ist offline   Mit Zitat antworten
Alt 10.08.2010, 09:20   #14 (Direktlink)
Stammuser
 
Registriert seit: 04.04.2009
Ort: Lübeck
Beiträge: 264
Standard

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
Gruß Thomas
THFR ist offline   Mit Zitat antworten
Alt 10.08.2010, 21:10   #15 (Direktlink)
Ist öfter hier
 
Benutzerbild von Hallo1001
 
Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
Standard

Hallo Thomas!

Danke für die Änderungen, jetzt funktioniert es super...

LG Jens
Hallo1001 ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ä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



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:11 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2