![]() |
Problem mit Animation / Bearbeiten von Bildern
Hallo an alle,
Ich hab hier ein kleines problem und weiß wirklich nicht woran es liegen könnte warum es nicht klappt.. hier erst mal der code:
Delphi-Quellcode:
aalso, ich möchte hier versuchen, bilder "flashen" zu lassen, also in einer farbe aufleuchten lassen (hier rot) und dann langsam wieder zur normalfarbe zurückzugehen. in diesem code, welcher zu beginn ausgeführt wird, werden nun die bilder analysiert, die farbwerte verändert und in jeweils 8 bilder, welche dann die animation geben sollen, abgespeichert.for m := 1 to 8 do begin flashbilder[0,0]:=flashbilder[1,0]; for xi := 1 to 32 do begin for yi := 1 to 32 do begin if flashbilder[0,0].Canvas.Pixels[xi,yi]<>clwhite then begin red := ColorToRGB(flashbilder[0,0].Canvas.Pixels[xi,yi]) and $0000FF; green := (ColorToRGB(flashbilder[0,0].Canvas.Pixels[xi,yi]) and $00FF00) shr 8; blue := (ColorToRGB(flashbilder[0,0].Canvas.Pixels[xi,yi]) and $FF0000) shr 16; red:=red+250-m*30; green:=green-60+m*8; blue:=blue-60+m*8; if green<0 then green:=0; if blue<0 then blue:=0; if red>255 then red:=255; flashbilder[0,0].Canvas.Pixels[xi,yi]:=TColor(red + (green shl 8) + (blue shl 16)); end; end; end; flashbilder[1,m]:=flashbilder[0,0]; end; flashbilder[0,0] ist nur ne hilfsvariable, in der das aktuell zu bearbeitende bild zwischengespeichert wird. und unten wird schließlich in flashbilder[1,m] die bilder abgespeichert, wobei m die einzelnen animationsbilder sind (hier 1-8, unter 0 ist das originalbild gespeichert). später wird dann in einem timer die animation abgerufen und die bilder nacheinander abgerufen.. jedoch ist dann mein bild dauerhaft komplett rot, was nicht sein sollte.. dann hab ich getestet woran das liegen könnte.. der animationscode im timer ist korrekt, also muss es an den einzelnen bildern liegen. und dann hab ichs zum testen so gemacht, dass wenn das ereignis auftreten soll, anstatt der kompletten animation nur ein bild genommen wird, und zwar flashbilder[1,0], welches ja das originalbild sein sollte.. ist es aber nicht wirklich, da es ebenfalls komplett rot ist, was mich sehr verwundert und verwirrt.. wenn man sich den obigen code ansieht sieht man ja, dass in keinem fall an flashbilder[1,0] rumgespielt wird, also kann es gar nicht rot sein, oder sonstwas.. oder? das einzige mal, wo flashbilder[1,0] im code vorkommt, is am anfang, wo der "hilfsvariable" eben dieses bild zugeordnet wird, aber sonst ja nichts.. :gruebel: ich hoffe ihr wisst was ich meine und könnt mir vielleicht helfen |
Re: Problem mit Animation / Bearbeiten von Bildern
Liste der Anhänge anzeigen (Anzahl: 1)
1.) Warum verbraetst Du so viele Variablen?
flashbilder[0,1..8] werden nicht verwendet. 2.) Der Algorithmus ist noch nicht das, was Du willst flashbilder[0,1] wird (bei mir) ganz weiss Danach von "sehr rot" bis ganz schwarz abgestuft. Aber dass das flashbilder[0,8] ganz schwarz ist soll wohl auch nicht sein. Ausgehend von einem gruenen Bild (siehe abbildung) sehen die Ergebnisse entsprechend aus |
Re: Problem mit Animation / Bearbeiten von Bildern
ja [0,1..8] wird nicht verwendet, aber mein array sieht so aus flashbilder[0..10,0..8], weil ich das ganze mit mehreren bildern machen will(hier 10, werden aber wohl noch mehr)..
die [0,1..8] brauch ich nicht, stimmt, aber den rest ja schon.. hm, das mit den farben funktioniert bei mir eigentlich schon, so wie ich es will.. ich hatte das ganze schonmal so dass es klappt, aber sehr umständlich und dadurch wurde das programm extrem verlangsamt, indem ich die bilder erst direkt im timer, also bei der animation selbst jedesmal neu berechnet hab.. aber das problem bei mir ist ja glaub ich anderes.. aber trotzdem danke, ich werd mal noch etwas rumprobieren, vielleicht auch versuchen das ganze ganz anders zu lösen.. achja, vielleicht ist es bei dir teilweise anders mit den farben, weil in meinem code wird das ganze ja nur ausgeführt, wenn die farbe nicht weiß is(meine transparent-farbe).. edit: ok, ich hab jetzt ne lösung gefunden anscheinend gibts irgendwelche zuweisungsprobleme wenn ich einen befehl in der form benutze:
Code:
damit das funktioniert hab ich das jetzt folgendermaßen gelöst:
flashbilder[1,m]:=flashbilder[0,0];
Code:
ist zwar ein wenig blöd, aber so funktioniert es wenigstens ;)
flashbilder[0,0].SaveToFile('images\dummy.bmp');
flashbilder[1,m].loadfromfile('images\dummy.bmp'); deletefile('images\dummy.bmp'); |
Re: Problem mit Animation / Bearbeiten von Bildern
Stimmt.
Aber mit Verlaub, Dein Code bereitet mir ein wenig Kopfweh. Hab hier zu Hause kein Delphi, daher untested:
Delphi-Quellcode:
Nicht gut, aber besser.procedure CopySmallBMP(const picSource:TFlashBild; var picTarget:TFlashBild); var yi,xi:integer begin for xi := 1 to 32 do for yi := 1 to 32 do begin picTarget[xi,yi] := picSource[xi,yi]; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz